我有一个想逐年绘制的时间序列.我希望数据是每日的,但轴将每个月显示为“ Jan”,“ Feb”等.
目前,我可以获取每日数据,但轴为1-366(一年中的一天).
或者我可以将月度轴设置为1、2、3等(通过将索引更改为df.index.month),但是数据为月度.
如何将一年中的日轴转换为月?或者我该怎么做?
显示每日数据的代码,但轴错误:
# import
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# create fake time series dataframe
index = pd.date_range(start='01-Jan-2012', end='31-12-2018', freq='D')
data = np.random.randn(len(index))
df = pd.DataFrame(data, index, columns=['Data'])
# pivot to get by day in rows, then year in columns
df_pivot = pd.pivot_table(df, index=df.index.dayofyear, columns=df.index.year, values='Data')
df_pivot.plot()
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.show()
解决方法:
这可以使用xticks function完成.只需在plt.show()之前添加以下代码即可:
plt.xticks(np.linspace(0,365,13)[:-1], ('Jan', 'Feb' ... 'Nov', 'Dec'))
或将以下名称包含在月份的中间:
plt.xticks(np.linspace(15,380,13)[:-1], ('Jan', 'Feb' ... 'Nov', 'Dec'))
标签:pandas,matplotlib,datetime,python