【问题标题】:How can I show time on the x axis when using datetime?使用日期时间时如何在 x 轴上显示时间?
【发布时间】:2021-06-24 04:48:42
【问题描述】:

基本上我有一个仅涵盖一天的日期时间列表,所以我想根据我所做的一天中的时间进行绘图,但我不知道如何用时间而不是日期标记 x 轴,如图所示。

# time = a list of times in format eg 01:23:45
x_values = [datetime.datetime.strptime(d,"%H:%M:%S").time() for d in time]
x_values = [datetime.datetime.strptime(d,"%H:%M:%S").time() for d in time]
my_day = datetime.date(2019, 3, 2)
x_dt = [datetime.datetime.combine(my_day, t) for t in x_values]

tick_spacing = 0.08
fig, ax = plt.subplots(1,1)
ax.plot(x_dt,magnitude_list)
ax.xaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))
plt.title('88992 Light Curve')
plt.ylabel('Magnitude')
plt.xlabel('Time')
plt.figure(figsize=(30,10))
plt.show()

Resulting plot

【问题讨论】:

    标签: python datetime matplotlib plot time


    【解决方案1】:

    就像你设置刻度间距一样,你可以在从 matplotlib 导入dates 之后设置(日期)时间格式。

    前:

    from datetime import datetime, timedelta
    
    import numpy as np
    from matplotlib import pyplot as plt
    from matplotlib import dates as mdates
    from matplotlib import ticker
    # generate some dummy data...
    n = 12
    x = [datetime.now()+timedelta(hours=i) for i in range(n)]
    y = np.random.rand(n)
    
    tick_spacing = 0.08
    time_fmt = '%H:%M:%S' # how you want to display time/date
    
    fig, ax = plt.subplots(1,1)
    ax.plot(x, y)
    ax.xaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))
    ax.xaxis.set_major_formatter(mdates.DateFormatter(time_fmt))
    plt.title('88992 Light Curve')
    plt.ylabel('Magnitude')
    plt.xlabel('Time')
    plt.figure(figsize=(30,10))
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 2013-07-21
      相关资源
      最近更新 更多