【问题标题】:How do I manipulate datetime (tick labels and limits) on a plot axis in Python?如何在 Python 中的绘图轴上操作日期时间(刻度标签和限制)?
【发布时间】:2014-08-15 19:37:07
【问题描述】:

我在 for 循环中创建了一个绘图,其中将日期时间列表作为 x 值。 x 刻度标记为日期,但我想显示小时(即 6、12、18、24 重复)。我还想将 xlim 设置为比数据集更宽,以便所有数据点都在轴内(而不是在边缘上)。我会发布这个数字,但这是我在 stackoverflow 上的第一个问题,所以这是不允许的。

【问题讨论】:

    标签: python datetime matplotlib


    【解决方案1】:

    您第一次这样做时会感到困惑,但为此使用显式格式化程序和定位器是最简单的。要防止点接触边界,请使用ax.margins(pad) 或等效的plt.margins(pad)

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    
    dates = pd.date_range('01/01/2014', '01/05/2014', freq='1H')
    y = np.random.random(dates.size)
    
    locator = mdates.HourLocator(range(0, 24, 6))
    formatter = mdates.DateFormatter('%H')
    
    fig, ax = plt.subplots()
    ax.plot(dates, y, 'ko')
    ax.margins(0.05) # Keep points from touching margin of plot
    
    ax.xaxis.set(major_formatter=formatter, major_locator=locator)
    
    plt.show()
    

    或者您可能更喜欢这样显示小时数:

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    
    dates = pd.date_range('01/01/2014', '01/05/2014', freq='1H')
    y = np.random.random(dates.size)
    
    locator = mdates.HourLocator(range(0, 24, 6))
    formatter = mdates.DateFormatter('%H:%M')
    
    fig, ax = plt.subplots()
    ax.plot(dates, y, 'ko')
    ax.margins(0.05) # Keep points from touching margin of plot
    
    ax.xaxis.set(major_formatter=formatter, major_locator=locator)
    fig.autofmt_xdate() # Quick way of rotating tick labels
    
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2023-04-11
      • 2016-02-18
      • 2020-09-15
      • 2023-03-16
      • 2016-06-24
      • 1970-01-01
      • 2012-02-21
      • 2012-01-21
      • 2021-03-24
      相关资源
      最近更新 更多