首页 > 解决方案 > Python在轴上将一年中的日期转换为月份

问题描述

我有一个时间序列,我想逐年绘制。我希望数据是每天的,但轴每个月显示为“一月”、“二月”等。

目前我可以获得每日数据,但轴为 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()

以 0、50、100、150 等为轴的图表结果 - 显示日期编号而不是月份,如 Jan、Feb、Mar 等

标签: pythonpandasdatetimematplotlib

解决方案


这可以使用xticks 函数来完成。只需在之前添加以下代码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'))

推荐阅读