【问题标题】:How to show date and time on x axis in matplotlib如何在 matplotlib 的 x 轴上显示日期和时间
【发布时间】:2016-01-03 12:18:20
【问题描述】:

我想在 matplotlib 中为 x 轴指定带有时间的完整日期,但使用自动缩放我只能获得时间或日期,但不能同时获得两者。以下代码:

import matplotlib.pyplot as plt
import pandas as pd

times = pd.date_range('2015-10-06', periods=500, freq='10min')

fig, ax = plt.subplots(1)
fig.autofmt_xdate()
plt.plot(times, range(times.size))
plt.show()

在 x 轴上,我只得到没有任何日期的时间,因此很难区分测量值。

我认为这是 matplotlib.dates.AutoDateFormatter 中 matplotlib 中的一些选项,但我找不到任何可以让我更改自动缩放的选项。

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    您可以使用matplotlib.dates.DateFormatter 来执行此操作,它将strftime 格式字符串作为其参数。要获取day-month-year hour:minute 格式,可以使用%d-%m-%y %H:%M

    import matplotlib.pyplot as plt
    import pandas as pd
    import matplotlib.dates as mdates
    
    times = pd.date_range('2015-10-06', periods=500, freq='10min')
    
    fig, ax = plt.subplots(1)
    fig.autofmt_xdate()
    plt.plot(times, range(times.size))
    
    xfmt = mdates.DateFormatter('%d-%m-%y %H:%M')
    ax.xaxis.set_major_formatter(xfmt)
    
    plt.show()
    

    【讨论】:

    • 如果您为绘图定义了两个 y 轴,您可能需要在另一个轴对象上调用 xaxis.set_major_formatter(xfmt)
    • 如何增加x轴上的日期数(显示日期的频率)?
    • @Nihat 您想更改Locator。例如,在这种情况下,我们可以使用 ax.xaxis.set_major_locator(mdates.HourLocator(interval=6)) 每 6 小时进行一次滴答。有关不同可用定位器的列表,请参阅 the docs here
    【解决方案2】:
    plt.figure() 
    plt.plot(...)
    plt.gcf().autofmt_xdate() plt.show()
    

    【讨论】:

    • 为代码答案添加上下文被认为是有用的。
    【解决方案3】:

    这是当日期和时间列不是您的索引列时如何绘制它。
    fig, ax = plt.subplots() ax.plot('docdate', 'count', data=newdf) fig.autofmt_xdate() plt.show()

    【讨论】:

    • 添加口头解释通常很有帮助
    • 这只是接受答案的一个非常简化的版本,没有真正的添加。
    猜你喜欢
    • 1970-01-01
    • 2015-05-02
    • 2021-06-24
    • 2021-12-22
    • 1970-01-01
    • 2019-09-29
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多