首页 > 解决方案 > 使用 mplcursors.cursor().connect() 显示栏名称

问题描述

这是我的数据框

df = pd.DataFrame((['Sep-2015',  'Adam',3,10 ],         
['Sep-2015',  'David',3,9],
['Sep-2015',  'Adam',4,8],                   
['Sep-2015',  'Adam' ,3,7],         
['Sep-2015',  'David',6,6],         
['Sep-2015' , 'Hardik',1,5],        
['Sep-2015' , 'David' ,3,4],['Aug-2015' , 'David' ,3,4],['Aug-2015' , 'Ada' ,3,4]),columns=
['Date','Name','Count','alarm'])

使用这个数据框,我绘制了一个堆积条形图

df.sort_values('Date')
df = df.drop_duplicates(['Date', 'Name'], keep='last')
df2 = pd.DataFrame()
df2['Date'] = df['Date']
df2['Name'] = df['Name']
df2['Count'] = df['alarm']
df2
#pivot table
df2 = pd.pivot_table(data = df, values = 'alarm', columns = 'Name', index = 'Date').reset_index()
df2 = df2.set_index('Date')
plot = df2.plot(kind = 'bar',stacked = True,figsize=(15, 5))

我得到如下输出

在此处输入图像描述

在这里,我尝试在单击栏时显示栏名称。我试过了

mplcursors.cursor(plot).connect(
                    "add", lambda sel: sel.annotation.set_text(['Ada','Adam','David','Hardik'][sel.target.index]))

但是当我尝试这个时,它只显示所有条的第一个元素(Ada)。我怎样才能显示酒吧名称?

标签: pythonmplcursors

解决方案


这有效:

mplcursors.cursor(plot).connect("add", 
                                lambda sel: sel.annotation.set_text(sel.artist.get_label()))

推荐阅读