Функция plot_date устанавливает xticks для почасовых данных

В настоящее время у меня есть функция, которая создает график временных рядов из данных времени/даты в формате MM-DD-YYYY HH-MM. Я не уверен, как изменить метки оси X, чтобы они отображали часы, а также дату, поскольку в настоящее время отображаются только даты.

Строка set_major_locator, которую я включил, возвращает только тики, у которых есть год, даже несмотря на то, что я указал hour_locator и данные почасовые.

def graph(region):

    fig = plt.figure(num=None, figsize=(60, 20), dpi=100, facecolor='w', edgecolor='k')

    df_da_region = df_da_abv_09[df_da_abv_09['Settlement Point'] == region]
    df_rt_region = df_rt_abv_09[df_rt_abv_09['Settlement Point Name'] == region]

    fig = plt.plot_date(x=list(df_da_region['DateTime']), y=list(df_da_region['Settlement Point Price']), xdate = True, fmt="r-", linewidth=0.7)
    fig = plt.plot_date(x=list(df_rt_region['DateTime']), y=list(df_rt_region['Settlement Point Price']), xdate = True, fmt="g-", alpha=0.5, linewidth=0.7)

    fig = plt.gca().xaxis.set_major_locator(mdates.HourLocator(interval=5))
    plt.show()

введите здесь описание изображения


person Susan Chen    schedule 09.10.2018    source источник
comment
Здесь будет полезен минимально воспроизводимый пример.   -  person ImportanceOfBeingErnest    schedule 09.10.2018
comment
Я добавил изображение и удалил несколько строк кода, которые не так важны.   -  person Susan Chen    schedule 10.10.2018
comment
Я не могу дать полное решение без исполняемого кода. Итак, просто чтобы направить вас на правильный путь: форматтер для тиков должен быть настроен для работы с локатором. Если вы меняете локатор, вам нужно сообщить об этом форматировщику или, поскольку это неочевидно, также установить новый форматировщик.   -  person ImportanceOfBeingErnest    schedule 10.10.2018


Ответы (1)


Используйте 1_. Сначала импортируйте его вверху

import matplotlib.dates as mdates

затем замените эту строку

fig = plt.gca().xaxis.set_major_locator(mdates.HourLocator(interval=5))

чем-то вроде этого

myFmt = mdates.DateFormatter('%y-%m-%d %H') # here you can format your datetick labels as desired
plt.gca().xaxis.set_major_formatter(myFmt)

В примере со случайными числами (поскольку вы не предоставили образцы данных) это выглядит так

введите здесь описание изображения

Здесь форматер выбирается как вы хотели: даты + часы. Для получения дополнительной информации о том, как отформатировать дату на оси, проверьте здесь

person gehbiszumeis    schedule 10.10.2018