Python matplotlib, как отображать больше тиков - PullRequest
0 голосов
/ 08 апреля 2020

Следующий код генерирует график с несколькими отметками, но мне нужно отображать отметку каждые 4 или 6 часов. Как мы можем это сделать?

import matplotlib.dates as mdates
# Plot train and test so you can see where we have split
gdf = x_test[['AllAPIs']] \
    .rename(columns={'AllAPIs': 'Test Set'}) \
    .join(x_train.rename(columns={'AllAPIs': 'Training Set'}),
          how='outer')
ax = gdf.plot(figsize=(12,5),title='API Calls')
plt.xticks(
    rotation=45,
    horizontalalignment='right',
    fontweight='light',
    fontsize='medium',
)
plt.show()

Выходной график такой: enter image description here

Если я добавлю HourLocator следующим образом, я потеряю свои тики:

# set monthly locator
ax.xaxis.set_major_locator(mdates.HourLocator(interval=4))
# set formatter
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H'))

enter image description here

Чего мне не хватает ?????

1 Ответ

1 голос
/ 08 апреля 2020

Почему бы вам не установить ticks из объекта plt?

plt.xticks(
    ticks = gdf.index.values
    rotation=45,
    horizontalalignment='right',
    fontweight='light',
    fontsize='medium',
)

Это может установить множество значений, однако вы можете легко построить параметр xticks на основе индекс.

Например, сортировка значений индекса сортировки:

start = gdf.index.values[0]
end = gdf.index.values[-1]

ticks = pd.date_range(start, end, freq='4H')
labels = [x.strftime('%Y-%m-%d %H') for x in ticks]

plt.xtics(ticks=ticks, labels=labels)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...