我想为使用matplotlib创建的SVG线图创建工具提示(显示数据值)。这将使用户能够单击或悬停在线图中的每个标记上,显示该特定点的值。
为了能够实现这一点,我需要访问Line2D对象的标记元素,并向每个此类元素添加gid。
在http://matplotlib.org/examples/user_interfaces/svg_histogram.html上,有一个如何针对直方图完成此操作的示例。
然而,如果我尝试使用折线图来做这件事,我发现Line2D对象不可迭代——可能是因为它不像直方图条形图一样是补丁集合。
这导致出现错误:"TypeError: 'Line2D'对象不可迭代"
问题是如何从Line2D访问单个标记
有一些使用matplotlib交互后端的方法可以实现此操作。但我需要为非交互SVG实现此操作。
为了能够实现这一点,我需要访问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))
然而,如果我尝试使用折线图来做这件事,我发现Line2D对象不可迭代——可能是因为它不像直方图条形图一样是补丁集合。
H = plt.plot([1,2,3,4],[1,4,9,16], 'ro')
containers = H[-1]
enumerate(containers)
这导致出现错误:"TypeError: 'Line2D'对象不可迭代"
问题是如何从Line2D访问单个标记
有一些使用matplotlib交互后端的方法可以实现此操作。但我需要为非交互SVG实现此操作。
plot
的x
和y
向量(或者迭代zip(x,y)
)。那些是您想要添加gids的点,对吗? - cphlewis