【问题标题】:Adding datalabels - matplotlib barchart添加数据标签 - matplotlib 条形图
【发布时间】:2014-11-06 00:34:38
【问题描述】:

我有一个我正在绘制的 pandas DataFrameGroupBy 对象......

grouped.sum().plot(kind='bar')

这给了...

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

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

【问题讨论】:

  • 你的 Pandas 版本是什么?

标签: python matplotlib pandas


【解决方案1】:

要在条形图顶部添加值标签,您可以遍历每个索引中的列并使用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+ 开始支持表格。

你可以阅读更多关于Plotting table HERE

DataFrame.plot() 现在支持使用 matplotlib 表进行绘图 和带有 table 关键字的 Series.plot()。 table 关键字可以接受 bool、DataFrame 或 Series。绘制表格的简单方法是 指定表=真。数据将被转置以满足 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)

此外,您可以为 table 关键字传递不同的 DataFrame 或 Series。 数据将按照打印方法中显示的方式绘制(不转置 自动地)。如果需要,应手动转置如下 例子。

fig, ax = plt.subplots(1, 1)
ax.get_xaxis().set_visible(False)   # Hide Ticks
df.plot(table=np.round(df.T, 2), ax=ax)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-09
    • 2022-01-11
    • 2021-02-20
    • 2017-03-10
    • 2022-01-16
    相关资源
    最近更新 更多