在 Pandas Matplotlib 中操作 x 轴日期

3

我有一组非常简单的数据如下所示。我正在寻找一种方法来绘制此堆积条形图并格式化x轴(日期),使其从1996-31-12开始,以每365天增量结束于2016-31-12。我编写的代码正在绘制每个日期,因此x轴非常拥挤且难以阅读。

Datafame:

Date             A             B  
1996-31-12       10            3
1997-31-03       5             6
1997-31-07       7             5
1997-30-11       3             12
1997-31-12       4             10
1998-31-03       5             8
.
.
.
2016-31-12       3             9
1个回答

4
这是一个类似的问题:Pandas timeseries plot setting x-axis major and minor ticks and labels
你可以使用 matplotlib 自己来管理这个问题,而不是使用 pandas。
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# if your dates are strings you need this step
df.Date = pd.to_datetime(df.Date)

fig,ax = plt.subplots()
ax.plot_date(df.Date,df.A)
ax.plot_date(df.Date,df.B)
ax.xaxis.set_major_locator(mdates.YearLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b\n%Y'))
plt.show()

我尝试了上面的代码,但是出现了错误信息:AttributeError: 'str' object has no attribute 'toordinal'。有什么想法吗? - spacedinosaur10
1
哦,你的日期是字符串吗?请查看编辑后的答案。 - mechanical_meat
我猜我现在遇到的另一个问题是我需要一个堆积条形图。我尝试添加kind=bar和stacked=true,但似乎与plot_date函数不兼容。 - spacedinosaur10
1
我一直在尝试使用pandas解决这个问题,但一直没有成功。看起来这里可能存在一个与条形图特定相关的问题:https://github.com/pandas-dev/pandas/issues/14119 - mechanical_meat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接