使用MPLD3制作交互式条形图

时间:2015-12-26 19:26:57

标签: python-2.7 matplotlib mpld3

我正在尝试制作交互式条形图,但无法弄清楚如何标记这些框。给定一个直方图我想拥有它,所以当光标在条上时,显示高度或我想要的任何标签。以下代码显示图表但没有标签:

hist, bins = np.histogram(df.PER, bins=15)
width = 1 * (bins[1] - bins[0])
center = (bins[:-1] + bins[1:]) / 2

fig, ax = plt.subplots()
boxes = ax.bar(center, hist, align='center', width=width,alpha=0.7,facecolor="red",edgecolor='w')

tooltip = mpld3.plugins.PointHTMLTooltip(boxes[0],labels=bins.tolist(),
                                   voffset=10, hoffset=10)
mpld3.plugins.connect(fig, tooltip)

mpld3.display()

其中df.PER是来自此处的数据:

0      35.47
1      31.27
2      30.64
3      26.92
4      26.71
5      26.49
6      26.45
7      26.21
8      26.17
9      25.85
10     25.48
11     25.34
12     24.64
13     24.32
14     23.46
15     23.42
16     23.37
17     22.76
18     22.45
19     22.45
20     22.43
21     22.10
22     21.99
23     21.82
24     21.62
25     21.44
26     21.31
27     21.26
28     21.26
29     20.87

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

对我来说,您的代码会为条形图中的第一个条形创建工具提示标签。您可以使用循环来完成剩下的工作:

for i, box in enumerate(boxes.get_children()):
    tooltip = mpld3.plugins.LineLabelTooltip(box, label=bins[i])
    mpld3.plugins.connect(fig, tooltip)

这是a notebook showing the results in context

这是has been requested previously, and would be nice to offer more directly的功能,例如作为mpld3.plugins.BarTooltip;补丁欢迎!