2015-05-06 4 views
2

Я хочу создать всплывающие подсказки (отображающие значения данных) для линейных диаграмм SVG, созданных с использованием matplotlib. Это позволит пользователю щелкнуть или навести курсор мыши над каждым маркером в строке, отображающей значение этой конкретной точки.Создание всплывающей подсказки для строки svg с использованием matplotlib

Чтобы сделать это, мне нужно получить доступ к элементам маркера объекта Line2D и добавить gid к каждому из таких элементов.

В http://matplotlib.org/examples/user_interfaces/svg_histogram.html приведен пример того, как это делается для гистограммы.

H = plt.hist([r,r1], label=labels) 
containers = H[-1] 
hist_patches = {} 
for ic, c in enumerate(containers): 
    hist_patches['hist_%d'%ic] = [] 
    for il, element in enumerate(c): 
     element.set_gid('hist_%d_patch_%d'%(ic, il)) 
     hist_patches['hist_%d'%ic].append('hist_%d_patch_%d'%(ic,il)) 

Однако, если я пытаюсь сделать это с помощью Linechart я считаю, что объект Line2D не итератор - вероятно, потому, что это не просто набор патчей, как столбики гистограммы.

H = plt.plot([1,2,3,4],[1,4,9,16], 'ro') 
containers = H[-1] 
enumerate(containers) 

Это приводит к следующему: «TypeError: объект„Line2D“не итерации»

Вопрос заключается в том, как получить доступ отдельных маркеров из Line2D

Есть несколько рецептов, чтобы сделать это с помощью интерактивного бэкенды matplotlib. Но мне нужно реализовать это для неинтерактивного SVG.

+0

Попробуйте выполнить переходы 'x' и' y', которые вы передали в 'plot' (или над' zip (x, y) '). Это те точки, которые вы хотите добавить в любом случае, да? – cphlewis

+0

Я знаю, что это можно сделать на интерактивном графике matplotlib. Как это сделать в SVG? Можете ли вы указать пример? – user3897208

ответ

0

Лучшим решением проблемы может быть библиотека Charts. Это позволяет вам использовать отличную библиотеку javascript Highcharts, чтобы сделать красивые и интерактивные сюжеты. В Highcharts используется тег HTML svg.

По умолчанию все диаграммы будут иметь интерактивные подсказки!

Отказ от ответственности: Я разработчик библиотеки.

Смежные вопросы