【发布时间】:2019-03-11 19:39:07
【问题描述】:
我正在尝试为数据框制作一个简单的条形图,其中包含日期作为索引和几列数据。
start_date = pd.to_datetime('20180101')
dates = pd.date_range(start_date, periods=365)
df = pd.DataFrame(np.random.randn(365,4), index = dates, columns = list('ABCD'))
df = df.resample('M').sum()
如果我使用
df.plot.bar()
然后 x 轴上的日期就搞砸了。 如果我使用
fig, ax = plt.subplots()
ax.bar(df.index, df['A'],width = 5, align = 'center')
ax.bar(df.index, df['B'], width = 5 , align = 'center')
ax.bar(df.index, df['C'],width = 5, align = 'center')
ax.bar(df.index, df['D'], width = 5 , align = 'center')
ax.xaxis_date()
ax.get_xaxis().set_major_locator(mdates.MonthLocator())
ax.get_xaxis().set_major_formatter(mdates.DateFormatter("%b %Y"))
fig.autofmt_xdate()
plt.show()
然后我的条形相互重叠,日期以一个月为单位显示。
有人可以提出一个优雅的解决方案,如何绘制不会有上述缺点的条形图吗?
【问题讨论】:
-
Pandas 条形图是分类的。但对我来说,结果看起来不错。由于您执行的重采样,matplotlib 图表中一个月的偏移在您的数据中。 This example 展示了如何在 matplotlib 中制作分组条形图。
标签: python pandas matplotlib charts