代码之家  ›  专栏  ›  技术社区  ›  Lewis Penden

如何在Python matplotlib中在固定时间段内格式化hh:mm的ticker

  •  0
  • Lewis Penden  · 技术社区  · 1 年前

    我是编程的业余爱好者,但我正在尝试创建一个python小部件,它可以根据当前时间显示受控环境温室的选定光周期。GUI将包含这个小部件,这样我就可以远程了解编程的光小时数。

    我正处于制作这个的早期阶段,在试图设置轴的时间格式时遇到了困难。

    正如您在图中所看到的,我想绘制当前时间与设置的时间线,以及设置的股票代码/间隔。

    欢迎任何关于改进的建议,现在是我Python之旅的早期阶段,非常感谢简单而有建设性的帮助或指导:)

    这是一个概念:

    ( https://i.sstatic.net/x0Z4vsiI.png )

    这是我当前的代码:

    import matplotlib.pyplot as plt
    import matplotlib.dates as md
    import datetime
    import numpy as np
    import matplotlib.ticker as plticker
    
    
    
    
    #Creating an object for the current date and time
    timenowfull = datetime.datetime.now()
    
    
    #converting current time to hh:mm
    timenowMMHH = (timenowfull.strftime("%H:%M"))
    
    #testing the current time converted readout
    print(timenowMMHH)
    
    
    dataY = np.array([0.5])
    dataX = np.array([timenowMMHH])
    
    
    plt.ylim(0, 1) 
    plt.locator_params(axis='y', nbins=1) 
    
    
    
    #creates the scatter plot with a line as a marker
    plt.scatter(dataX,dataY,marker="|",s=100000)
    
    

    这是电流输出:

    ( https://i.sstatic.net/2fNDiVEM.png )

    1 回复  |  直到 1 年前
        1
  •  0
  •   Vinod Baste    1 年前

    使用对代码进行的必要更改 matplotlib.dates 格式化 x-axis 对于 hh:mm :

    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    import datetime as dt
    import numpy as np
    
    now = dt.datetime.now()
    
    x = [now]
    y = [0.5] 
    
    fig, ax = plt.subplots()
    ax.scatter(x, y, marker="|", s=100000)
    
    # Configure x-axis major and minor tick locators and formatter
    ax.xaxis.set_major_locator(mdates.HourLocator(interval=1))     # Set major ticks every hour
    ax.xaxis.set_minor_locator(mdates.MinuteLocator(interval=30))  # Set minor ticks every 30 minutes
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))    # Format x-axis labels as 'hour:minute'
    
    # Set x-axis limits from 00:00 to 23:59 of the current day
    ax.set_xlim(now.replace(hour=0, minute=0), now.replace(hour=23, minute=59))
    
    plt.ylim(0, 1)
    plt.xticks(rotation=45)
    plt.show()
    
    推荐文章