我对编程相当业余,但我正在尝试创建一个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)
这是当前的输出:
使用
matplotlib.dates
对代码进行必要的更改,将 x-axis
格式化为 hh:mm
:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime as dt
import numpy as np
timenowfull = dt.datetime.now()
timenowMMHH = timenowfull.strftime("%H:%M")
print(timenowMMHH)
dataY = np.array([0.5])
dataX = np.array([timenowfull])
fig, ax = plt.subplots()
ax.scatter(dataX, dataY, marker="|", s=100000)
ax.xaxis.set_major_locator(mdates.HourLocator(interval=1))
ax.xaxis.set_minor_locator(mdates.MinuteLocator(interval=30))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
ax.set_xlim(dt.datetime.combine(timenowfull.date(), dt.time(0, 0)),
dt.datetime.combine(timenowfull.date(), dt.time(23, 59)))
plt.ylim(0, 1)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()