在散点图中的工具提示中为每个气泡显示一个标签(Matplotlib)

时间:2018-06-05 14:51:58

标签: python python-3.x matplotlib

我有一个动画散点图,显示了这些年来每个国家的人均GDP x预期寿命。 我想添加一个工具提示,当有人将鼠标悬停在气泡上时会显示该工具提示,我希望它显示气泡等效的国家/地区的名称。

我试图使用mplcursors这样做,但是很难弄清楚如何显示国家名称,因为它在每个泡沫中都是不同的。

这是情节:

ax.scatter(y = data['lifeExpec'],
    x = data['gdp'],
    s = data['population']/40000,
    c = data['region'].astype('category').cat.codes,
    cmap = cm.viridis,
    edgecolors = 'none',
    alpha = 0.5)

 c1 = mplcursors.cursor(ax, hover=True)
    @c1.connect("add")
    def _(sel):
        sel.annotation.set_text(<????>)
        sel.annotation.set(position=(-15,15), 
                           fontsize=8, 
                           ha='center', 
                           va='center')

以下是我的数据框样本:

country, gdp, lifeExpec, year, population, region
USA, 20000, 70, 2005, 100000, America
USA, 21000, 72, 2007, 104000, America
Canada, 20500, 71, 2005, 50000, America
Canada, 23000, 74, 2007, 53000, America

1 个答案:

答案 0 :(得分:1)

mplcursors文档的Customization部分指出我可以简单地使用target.index来指示所选择的点的索引。这是最终的代码:

c1 = mplcursors.cursor(ax, hover=True)
    @c1.connect("add")
    def _(sel):
        sel.annotation.set_text(data['country'].iat[sel.target.index])
        sel.annotation.set(position=(-15,15), 
                           fontsize=8, 
                           ha='center', 
                           va='center')