gpt4 book ai didi

python - matplotlib 多列条形图,x 轴上有日期

转载 作者:行者123 更新时间:2023-12-01 01:32:46 24 4
gpt4 key购买 nike

我正在尝试为数据框制作一个简单的条形图,其中包含日期作为索引和几列数据。

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()

然后我的条形图相互重叠,日期显示时会移动一个月。

有人可以建议一个优雅的解决方案,如何绘制没有上述缺点的条形图吗?

最佳答案

我用 bar 和 used this example 做了一个类似的项目以获得正确的格式。

由于我没有 mdates 值,我无法运行它来检查它在您的情况下是否正确,但请尝试这样做:

...
fig, ax = plt.subplots()
width = 5
ax.bar(df.index, df['A'], width, align = 'center')
ax.bar(df.index + width , df['B'], width, align = 'center')
ax.bar(df.index + 2*width, df['C'], width, align = 'center')
ax.bar(df.index + 3*width, df['D'], width, align = 'center')
ax.set_xticks(df.index + width) # sets the x-ticks to the middle of the cluster of bars
ax.xaxis_date()
...

关于python - matplotlib 多列条形图,x 轴上有日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52680145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com