gpt4 book ai didi

python - matplotlib HourLocator 窃取了我的 x 标签

转载 作者:行者123 更新时间:2023-11-28 18:23:18 27 4
gpt4 key购买 nike

当我绘制半小时时间序列时,我的轴标签很奇怪(比如 16:33:12h 左右...)当我使用 HourLocator 解决这个问题时(16:33h -> 16:00h),然后我的 x 标签完全消失了。

我的代码是:

from datetime import date, timedelta, datetime, time
from matplotlib.dates import DayLocator, HourLocator
import matplotlib.pyplot as plt

start = time(0, 0, 0)
delta = timedelta(minutes=30)
times = []

for i in range(len(day_load)):
dt = datetime.combine(date.today(), time(0, 0)) + delta * i
times.append(dt.time())

load = [i/48 for i in range(48)]

fig, ax = plt.subplots()
ax.plot_date(times, load)
ax.xaxis.set_major_locator(HourLocator())
plt.show()

我怎样才能获得“偶数”标签(以最佳实践方式 - 我不想再次为所有其他情节重写代码)。当我评论倒数第二行时,我得到正常的“奇数”标签:(

谢谢解答!

最佳答案

主要有两个问题:

  • 您需要处理完整的日期时间对象,而不仅仅是时间。因此,您应该直接附加 dt 而不是 dt.time()
  • 您不仅需要一个定位器,还需要一个格式化程序来生成漂亮的刻度标签。在这里您可以使用 DateFormatter("%H:%M") 来显示小时和分钟。

完整代码:

from datetime import date, timedelta, datetime, time
from matplotlib.dates import DayLocator, HourLocator,DateFormatter
import matplotlib.pyplot as plt

start = time(0, 0, 0)
delta = timedelta(minutes=30)
times = []
n=48

for i in range(n):
# use complete datetime object, not only time
dt = datetime.combine(date.today(), time(0, 0)) + delta * i
times.append(dt)

load = [i/float(n) for i in range(n)]

fig, ax = plt.subplots()
ax.plot_date(times, load)

# set a locator, as well as a formatter
ax.xaxis.set_major_locator(HourLocator())
ax.xaxis.set_major_formatter(DateFormatter("%H:%M"))

#optionally rotate the labels and make more space for them
fig.autofmt_xdate()
plt.show()

enter image description here

关于python - matplotlib HourLocator 窃取了我的 x 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43368302/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com