从使用PeriodIndex索引的数据图中缺少tick标签

时间:2016-03-10 12:39:29

标签: python pandas matplotlib

我正在尝试绘制两个系列并且每隔5年标记一次x轴刻度。如果由于某种原因我使用PeriodIndex索引数据,我会每隔10年获得一次。如果我使用整数列表来索引,那么它工作正常。有没有办法用PeriodIndex来获得正确的刻度标签?

import pandas as pd
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

np.random.seed(0)
idx = pd.PeriodIndex(range(2000,2021),freq='A')
data = pd.DataFrame(np.random.normal(size=(len(idx),2)),index=idx)
fig,ax = plt.subplots(1,2,figsize=(10,5))
data.loc[:,0].plot(ax=ax[0])
data.iloc[9:,1].plot(ax=ax[1])
ax[1].xaxis.set_major_locator(mpl.ticker.MultipleLocator(5))
plt.show()

with PeriodIndex

idx = range(2000,2021)

with integer idex

我知道的解决方法是将PeriodIndex转换为DatetimeIndex,然后转换为datetime.datetime个对象的数组,并使用plt.plot_date()绘制并mpl.dates.YearLocator(5)为格式。这似乎过于复杂。

0 个答案:

没有答案