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

问题描述 投票:0回答: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

python matplotlib datetime axis ticker
1个回答
0
投票

使用

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()
© www.soinside.com 2019 - 2024. All rights reserved.