python - 使用 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)。我怎样才能显示酒吧名称?
解决方案
这有效:
mplcursors.cursor(plot).connect("add",
lambda sel: sel.annotation.set_text(sel.artist.get_label()))
推荐阅读
- outlook-web-addins - 有没有办法在“to”或“cc”字段中获取所有收件人?
- android - 有没有人从美国成功向中国腾讯应用商店提交安卓应用?
- java - 为什么要编译 Java 正则表达式?
- reactjs - React OnClick 函数不会绑定,“this”仍然显示未定义
- vhdl - VHDL 综合工具不会推断 FSM
- mysql - MySQL (5.7.21) 外键约束解析顺序
- visual-studio - 构建错误:QtVS 2015 控制台应用程序项目中的 LNK2019 和 LNK1120
- python - 管理员登录时出现 PermissionError
- azure - azure terraform 可以消化 ARM 资源配置期间创建的 json 文件吗?
- reactjs - 如何在 reactjs 上修复从 3.5.2 到 3.6.2 的 TypeScript 更新