【问题标题】:Matplotlib plot 24 hours with 1 hour intervalsMatplotlib 以 1 小时为间隔绘制 24 小时图
【发布时间】:2019-02-17 22:27:04
【问题描述】:

嗨,我目前有这个情节。现在,此图显示每个刻度的间隔为 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()

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    插入行:

    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()  
    

    我还在 plt.show() 之前添加了 fig.autofmt_xdate() 行,以帮助格式化每小时频率,以防止 x 轴上的时间戳重叠。

    这会产生:

    【讨论】:

      猜你喜欢
      • 2021-02-16
      • 2022-11-18
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      相关资源
      最近更新 更多