嗨,我目前有这个情节。现在,该图显示了每个刻度为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()
答案 0 :(得分:2)
插入行:
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轴上的时间戳重叠。
这将产生: