缩放时自动显示次要刻度的Python图

时间:2019-03-23 04:41:57

标签: python matplotlib time-series ipython spyder

我试图使用绘图显示长时间的时间序列。由于这是一个很长的时间序列,因此我在每14天使用主要报价,在每7天使用次要报价

我不需要显示较小的滴答声,包括小时,分钟和秒,因为滴答声会重叠,从而变得混乱。

但是问题是,当放大时,该数字没有显示较小的刻度。

例如,在下图中,将其放大时,我想看到较小的刻度

  

1/1 2/1 3/1 ... 15/1

,以及小时数:分钟数:秒制

  

1/1 12:00:00 1/1 12:05:00 ....

应如何修改以下代码?

fig, ax = plt.subplots(nrows=nrows, ncols=ncols, figsize=figsize)
xticks = pd.date_range(data.index[0], data.index[-1], freq='14D')
xticks_minor = pd.date_range(data.index[0], data.index[-1], freq='7D')
xtickslabel = xticks.strftime('%d/%m')

for i, ax in enumerate(ax.flat):
    ax.plot(data, '.',color='k',zorder=2)
    ax.set_xlim(data.index[0],data.index[-1])
    ax.set_xlabel('t ('+str(data.index[0].year)+')',fontsize = 14, family='Arial')
    ax.set_ylabel(varstr[i], fontsize = 14, family='Arial')
    ax.set_xticks(xticks)
    ax.set_xticks(xticks_minor, minor=True)
    ax.set_xticklabels(xtickslabel, rotation=0, fontsize=14)
#    ax.set_yticklabels(rotation=0, fontsize=12)
    myFmt = mdates.DateFormatter('%d/%m') # formate date of x-axes to make x calues shown on the figure %Y-%m-%d %H:%M:%S
    ax.xaxis.set_major_formatter(myFmt)
    ax.yaxis.set_tick_params(labelsize=14) # y-axes label size
    labels = ax.get_xticklabels()+ax.get_yticklabels()
    [label.set_fontname('Arial') for label in labels] 
    ax.grid(which='major',alpha=0.5,linestyle=':')
    ax.grid(which='minor',alpha=0.5,linestyle=':')

结果图如下: figure not automatically showing minor ticks

0 个答案:

没有答案