标签在调整matplotlib中的刻度时丢失

时间:2018-06-20 18:13:18

标签: python matplotlib

我为每月的时间序列绘制一些线图,从 1999年,代码如下:

import pandas as pd
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
url = ('https://raw.githubusercontent.com/mini-kep/parser-rosstat-kep/'
       'master/data/processed/latest/dfm.csv')
dfm =  pd.read_csv(url, converters={0: pd.to_datetime}, index_col=0)
ax = dfm.iloc[:,3:5].plot()  

enter image description here

这时,我有主要和次要刻度线和x刻度线标签。所需的更改是更改主要刻度的位置,以便它们每5年从2000年开始到2020年结束。我可以使用下面的代码(following this)做到这一点,但是我要付出的代价是刻度标签消失了。我无法用plt.xticks带回来。另一个小错误是我的滴答声现在在年终,而不是所需的开始年。

major_ticks = pd.date_range('2000', '2020', freq='5Y')
ax.set_xticks(major_ticks)
# below dows not help to add back major tick labels 
# plt.xticks(label=[t.year for t in major_ticks])
minor_ticks = pd.date_range('1998', '2020', freq='Y')
ax.set_xticks(minor_ticks, minor=True)

enter image description here

任何建议都值得赞赏。

更新:

我的问题中的代码紧跟this suggestion for changing the position of major ticks

但是,它被标记为duplicate of the question, that explains tick label formatting。它具有有用的线索,因此有效的最终代码如下:

# x_compat=True - an important part
ax = dfm.iloc[:,3:5].plot(x_compat=True)        
# set minor ticks
minor_ticks = pd.date_range('1998', '2020', freq='YS')
ax.set_xticks(minor_ticks, minor=True)
# set major ticks
major_ticks = pd.date_range('2000', '2020', freq='5YS') 
ax.xaxis.set_ticks(major_ticks, minor=False)
ax.xaxis.set_major_formatter(dates.DateFormatter('%Y'))
plt.gcf().autofmt_xdate(rotation=0, ha="center")

enter image description here

0 个答案:

没有答案