python - 向条形图添加更多数据
问题描述
有一个数据框:
{'Date': {0: '2020-06-01',
1: '2020-06-02',
2: '2020-06-03',
3: '2020-06-04',
4: '2020-06-08'},
'Started': {0: 1, 1: 1, 2: 3, 3: 2, 4: 2},
'Ended': {0: 0, 1: 0, 2: 2, 3: 0, 4: 1},
'conversion': {0: 0.0, 1: 0.0, 2: 0.67, 3: 0.0, 4: 0.5}}
我 data2.set_index('Date').plot.bar(figsize = (25, 20))
在 JupiterNotebook 中将其可视化
但我还需要在“日期”下或可能在列上添加“转换”列中的数据。没有必要以我的方式做,也许使用 seaborn 等
解决方案
您可以在 matplotlib中检查小插图以进行注释。要将注释放在条形顶部,您可以计算每个 x 轴条目的最大高度并使用注释(默认设置为textcoords='data'
):
data2 = pd.DataFrame({'Date': {0: '2020-06-01',
1: '2020-06-02',
2: '2020-06-03',
3: '2020-06-04',
4: '2020-06-08'},
'Started': {0: 1, 1: 1, 2: 3, 3: 2, 4: 2},
'Ended': {0: 0, 1: 0, 2: 2, 3: 0, 4: 1},
'conversion': {0: 0.0, 1: 0.0, 2: 0.67, 3: 0.0, 4: 0.5}})
fig, ax = plt.subplots(figsize=(8,3))
data2.set_index('Date').plot.bar(ax=ax)
hts = data2.iloc[:,1:].apply(max,axis=1) - 0.05
for i in range(len(hts)):
ax.text(i,hts[i],data2['conversion'][i])
要在 x 轴下进行注释,您可以执行类似的操作,只是需要转换 x 轴:
fig, ax = plt.subplots(figsize=(8,3))
data2.set_index('Date').plot.bar(ax=ax)
for i in range(len(hts)):
ax.annotate(data2['conversion'][i],xy=(i,-0.6),
xycoords=ax.get_xaxis_transform(),color="blue")
推荐阅读
- javascript - 我应该在反应或任何单页应用程序中使用 reCAPTCHA
- javascript - 列表中的每个孩子都应该有一个唯一的 key prop
- python - 使用生成器递归组合算法
- ruby-on-rails - 导轨;安装 Sidekiq 后的自动加载问题:ArgumentError(Api::V1 的副本已从模块树中删除,但仍处于活动状态!):
- javascript - switch语句上的javascript意外行为
- c# - C# 向程序添加大量声音并随机选择播放的最佳方法?
- docusignapi - 是否可以在我的应用程序中签署 pdf 而不是重定向到文档
- algorithm - 动态规划在现实世界编程中的应用
- python-3.x - 为什么会出现错误:“文件“stdin1”,第 1 行,无效语法”
- history - history.go(-1) 无法在IOS14 Beta2 App中运行