Матплотлиб участок 24 часа с интервалом 1 час - PullRequest
0 голосов
/ 13 сентября 2018

Привет, у меня сейчас есть этот сюжет.Прямо сейчас этот график показывает интервал 3 часа на тики.Я хочу иметь все часы с 0:00 до 23:59 или обратно до 0:00, т.е. 00:00, 01:00, 02:00 ... 23:00, 23:59 или 00: 00.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as md
import pandas as pd

df = pd.DataFrame({'toronto_time': ['2018-09-08 00:00:50',
                                    '2018-09-08 01:01:55',
                                    '2018-09-08 05:02:18',
                                    '2018-09-08 07:05:24',
                                    '2018-09-08 16:05:34',
                                    '2018-09-08 23:06:33'], 
                    'description': ['STATS', 'STATS', 'DEV_OL', 'STATS', 'STATS', 'CMD_ERROR']})
df['toronto_time'] = pd.to_datetime(df['toronto_time'], format='%Y-%m-%d %H:%M:%S')

fig, ax = plt.subplots(figsize=(8,6))
plt.plot('toronto_time', 'description', data=df)
ax.set_xlim(df['toronto_time'].min()-pd.Timedelta(1,'h'),
            df['toronto_time'].max()+pd.Timedelta(1,'h'))
ax.xaxis.set_major_formatter(md.DateFormatter('%H:%M:%S'))
plt.show()

enter image description here

1 Ответ

0 голосов
/ 13 сентября 2018

Вставка строки:

ax.xaxis.set_major_locator(md.HourLocator(interval = 1))

, похоже, имеет все значение, поскольку она устанавливает частоту тиковых отметок.

Полный пример ниже:

import matplotlib.pyplot as plt
import matplotlib.dates as md
import pandas as pd

df = pd.DataFrame({'toronto_time': ['2018-09-08 00:00:50',
                                    '2018-09-08 01:01:55',
                                    '2018-09-08 05:02:18',
                                    '2018-09-08 07:05:24',
                                    '2018-09-08 16:05:34',
                                    '2018-09-08 23:06:33'],
                    'description': ['STATS', 'STATS', 'DEV_OL', 'STATS', 'STATS', 
                                    'CMD_ERROR']})
df['toronto_time'] = pd.to_datetime(df['toronto_time'], format='%Y-%m-%d %H:%M:%S')

fig, ax = plt.subplots(figsize=(8,6))

plt.plot('toronto_time', 'description', data=df)
ax.set_xlim(df['toronto_time'].min()-pd.Timedelta(1,'h'),
            df['toronto_time'].max()+pd.Timedelta(1,'h'))

ax.xaxis.set_major_locator(md.HourLocator(interval = 1))
ax.xaxis.set_major_formatter(md.DateFormatter('%H:%M:%S'))

fig.autofmt_xdate()

plt.show()  

Я также добавил строку fig.autofmt_xdate() перед plt.show(), чтобы помочь отформатировать часовую частоту, чтобы предотвратить наложение временных отметок на оси x.

Это дает:

enter image description here

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