添加数据标签 - matplotlib 条形图

3
我有一个pandas的DataFrameGroupBy对象需要作图,代码如下...
grouped.sum().plot(kind='bar')

这个图表显示了...

enter image description here

但我想要更像这样的...

enter image description here

我只想知道如何为每一列添加数据标签,可能还有一个表格?


你的 Pandas 的版本是什么? - Anzel
1个回答

4

要在柱状图的顶部添加值标签,您可以循环遍历每个索引中的列,并使用text显示这些值,类似于以下代码:

df = DataFrame(rand(3,2), columns=['A', 'B'])
ax = df.plot(table=True, kind='bar', title='Random')
for i, each in enumerate(df.index):
    for col in df.columns:
        y = df.ix[each][col]
        ax.text(i, y, y)

你可能需要调整文本标签的坐标以获得更好的对齐效果等。
要显示网格表格,pandas从0.14+开始支持表格功能。
你可以在这里了解有关“绘制表格”的更多信息。

现在,在DataFrame.plot()和Series.plot()中支持使用table关键字绘制matplotlib表格。table关键字可以接受bool、DataFrame或Series。绘制表格的简单方法是指定table=True。数据将被转置以满足matplotlib的默认布局。

fig, ax = plt.subplots(1, 1)
df = DataFrame(rand(5, 3), columns=['a', 'b', 'c'])
ax.get_xaxis().set_visible(False)   # Hide Ticks
df.plot(table=True, ax=ax)

此外,您可以为表关键字传递不同的DataFrame或Series。数据将按照print方法中显示的方式绘制(不会自动转置)。如果需要,可以像下面的示例那样手动转置。
fig, ax = plt.subplots(1, 1)
ax.get_xaxis().set_visible(False)   # Hide Ticks
df.plot(table=np.round(df.T, 2), ax=ax)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接