График Python, показывающий мелкие галочки автоматически при масштабировании - PullRequest
0 голосов
/ 23 марта 2019

Я пытался использовать заговор, чтобы показать временные ряды за длительный период времени. Поскольку это длинный временной ряд, я использовал основных тиков за каждые 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

...