从 Pandas DataFrame 绘制条形图
Posted
技术标签:
【中文标题】从 Pandas DataFrame 绘制条形图【英文标题】:Plot bar graph from Pandas DataFrame 【发布时间】:2015-06-12 11:12:13 【问题描述】:假设我有一个看起来像这样的DataFrame
:
Hour | V1 | V2 | A1 | A2
0 | 15 | 13 | 25 | 37
1 | 26 | 52 | 21 | 45
2 | 18 | 45 | 45 | 25
3 | 65 | 38 | 98 | 14
我正在尝试创建一个条形图来比较 Hour
的列 V1
和 V2
。
当我这样做时:
import matplotlib.pyplot as plt
ax = df.plot(kind='bar', title ="V comp",figsize=(15,10),legend=True, fontsize=12)
ax.set_xlabel("Hour",fontsize=12)
ax.set_ylabel("V",fontsize=12)
我得到一个带有所有列的值和名称的图和图例。如何修改我的代码,以便绘图和图例仅显示列 V1
和 V2
【问题讨论】:
首先子选择感兴趣的列会不会提供您想要的东西:ax = df[['V1','V2']].plot(kind='bar', title ="V comp",figsize=(15,10),legend=True, fontsize=12)
?
@EdChum 我一直在尝试这条线,但我一直收到错误消息。我使用pandas.pydata.org/pandas-docs/version/0.15.2/visualization.html 作为参考,但找不到我需要的示例。但你是对的。如果你回答我可以接受。如果你可以添加[ [ ] ]
语法的解释,因为我在做ax = df['V1','V2']
【参考方案1】:
要仅绘制所选列,您可以通过将列表传递给下标运算符来选择感兴趣的列:
ax = df[['V1','V2']].plot(kind='bar', title ="V comp", figsize=(15, 10), legend=True, fontsize=12)
您尝试的是df['V1','V2']
,这将引发KeyError
,因为该标签不存在正确的列,尽管起初看起来很有趣,但您必须考虑到您正在传递一个列表,因此双方括号[[]]
.
import matplotlib.pyplot as plt
ax = df[['V1','V2']].plot(kind='bar', title ="V comp", figsize=(15, 10), legend=True, fontsize=12)
ax.set_xlabel("Hour", fontsize=12)
ax.set_ylabel("V", fontsize=12)
plt.show()
【讨论】:
恭喜获得熊猫金币!! @AndyHayden 感谢 Andy 我仍然觉得我还有很多东西要学 好的,你会如何为每个系列添加相关的误差线? @CF84 你应该发布一个问题而不是通过 cmets 提问,因为这对 SO 社区没有帮助以上是关于从 Pandas DataFrame 绘制条形图的主要内容,如果未能解决你的问题,请参考以下文章
按小时重新采样 Pandas DataFrame 并使用 Plotly 绘制堆积条形图
在同一张图表上将 Pandas DataFrame 绘制为 Bar 和 Line