python - 如何用一张图上显示的两个字典的值来注释熊猫条形图?
问题描述
我的代码:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
ME_Requests = {'John Doe': 105, 'Amanda Doe': 64, 'Maria Doe': 48, 'Dimitrii Doe': 44}
non_ME_Requests = {'John Doe': 47, 'Amanda Doe': 27, 'Maria Doe': 26,}
df = pd.DataFrame({'ME_Request':ME_Requests,
'non_ME_request':non_ME_Requests})
axes = df.plot.bar( title='My Barplots',subplots = True, sharex=True, sharey=True)
for ax in axes:
for p in ax.patches:
ax.annotate(str(round(p.get_height(),2)), (p.get_x(), p.get_height()))
plt.gcf().autofmt_xdate()
plt.show()
它返回两个带有注释的单独条形图(蓝色和橙色)。但是,我的目标是在同一张图表上同时显示(蓝色和橙色)。另外,不知道为什么橙色图表的数字以不同的格式显示:0.0 而不是 0。
有人可以帮我解决这个问题吗?先感谢您!
解决方案
您正在传递subplots=True
给绘图函数,这就是它创建两个子图而不是将两组条形图放在同一轴上的原因。
如果使用subplots=False
,则该函数仅返回一个轴而不是数组,因此您需要删除 for 循环
ax = df.plot.bar( title='My Barplots',subplots = False, sharex=True, sharey=True)
for p in ax.patches:
ax.annotate('{:.0f}'.format(p.get_height()), (p.get_x(), p.get_height()))