我试图用matplotlib创建一个堆叠的条形图,并使用mplcursors卡住了。当我运行程序时,如果我使用(没有[sel.index]),所有的条形图似乎都显示了最后一个人的最后一次数据:
info.connect("add", lambda sel: sel.annotation.set_text(dict[nameList[i]][2]))
如果我用途:
info.connect("add", lambda sel: sel.annotation.set_text(dict[nameList[i]][2][sel.index]))
然后,当我将鼠标悬停在条形图上时,错误列表索引超出了范围。以下是我到目前为止所得到的。任何帮助都将不胜感激。
import matplotlib.pyplot as plt
import mplcursors
dict = {'Tom': ([10, 20, 40], [0, 15, 40], [1, 2, 3]),
'John': ([10, 20], [0, 12], [5, 6]),
'Tim': ([10], [0], [7])}
nameList = ['Tom', 'John', 'Tim']
y_pos = range(len(nameList))
for i in range(len(nameList)):
bar = plt.bar(y_pos[i], height=dict[nameList[i]][0], width=0.1, bottom=dict[nameList[i]][1])
info= mplcursors.cursor(bar, hover=True)
# info.connect("add", lambda sel: sel.annotation.set_text(dict[nameList[i]][2][sel.index]))
info.connect("add", lambda sel: sel.annotation.set_text(dict[nameList[i]][2]))
plt.xticks(y_pos, nameList, rotation=90)
plt.show()
1条答案
按热度按时间laik7k3q1#
lambda函数中i变量的作用域存在问题