Я хочу создать всплывающие подсказки (отображающие значения данных) для линейных диаграмм 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.
Попробуйте выполнить переходы 'x' и' y', которые вы передали в 'plot' (или над' zip (x, y) '). Это те точки, которые вы хотите добавить в любом случае, да? – cphlewis
Я знаю, что это можно сделать на интерактивном графике matplotlib. Как это сделать в SVG? Можете ли вы указать пример? – user3897208