我有一个数据框,其中索引是每个月的第一个日期,size
列是该月的频率,例如
Using .index
在数据帧上确认索引的类型是DatetimeIndex
:
DatetimeIndex(['2006-12-01', ...],
dtype='datetime64[ns]', name='created_at_month', length=175, freq=None)
Using .plot()
在 DataFrame 上我可以每月生成一个折线图:
但是,它仅在 x 轴上每隔一年列出一次,我希望它在轴上列出每年。
我希望能够做到
ax.xaxis.set_major_locator(mdates.YearLocator(1))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y'))
然而,这根本不输出任何标签。
如果我添加一个小格式化程序(ax.xaxis.set_minor_formatter(mdates.DateFormatter('%d %m %Y'))
),我得到这个:
我在这里做错了什么导致日期改变?
相关版本有:
- Matplotlib:3.3.4
- 熊猫:1.2.4
- 蟒蛇:3.8.8
据报道here https://stackoverflow.com/a/64356273/9214357, 因为某些原因pandas
的情节显示了这个问题。
您可以通过替换来解决此问题pandas
' 绘制matplotlib.pyplot.plot
.
你可以采取这个答案 https://stackoverflow.com/a/62613876/9214357作为 x 轴上 2 个日期时间刻度的参考(月和年,或月和日,或日和小时,根据需要),在次要刻度和主要刻度处使用两个不同的轴。
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import numpy as np
df = pd.DataFrame({'created_at_month': pd.date_range(start = '2006-12-01', end = '2020-12-01', freq = 'MS')})
df['size'] = np.random.randint(0, 200, len(df))
df = df.set_index('created_at_month')
fig, ax = plt.subplots()
ax.plot(df.index, df['size'])
ax.xaxis.set_major_locator(mdates.YearLocator(base = 1, month = 1, day = 1))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y'))
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)