【发布时间】:2014-11-06 00:34:38
【问题描述】:
我有一个我正在绘制的 pandas DataFrameGroupBy 对象......
grouped.sum().plot(kind='bar')
这给了...
但我想要更像这样的东西......
我只想知道如何为每一列添加数据标签,也可能是一个表?
【问题讨论】:
-
你的 Pandas 版本是什么?
标签: python matplotlib pandas
我有一个我正在绘制的 pandas DataFrameGroupBy 对象......
grouped.sum().plot(kind='bar')
这给了...
但我想要更像这样的东西......
我只想知道如何为每一列添加数据标签,也可能是一个表?
【问题讨论】:
标签: python matplotlib pandas
要在条形图顶部添加值标签,您可以遍历每个索引中的列并使用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)
【讨论】: