如何修复错误“无效的 rrule byxxx 生成空集。”使用 MinuteLocator 绘制 matplotlib 绘图?

问题描述 投票:0回答:1

我想使用 matplotlib 创建一个绘图来显示沿 x 轴的时间。以下代码是一个完整的最小可行示例

import random
from datetime import datetime
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import dates as mdates

times = np.arange(0, 5000, 60)
x = [datetime.utcfromtimestamp(val) for val in times]
y = random.sample(range(1, 100), len(x))

formatter = mdates.DateFormatter("%H:%M")
locator = mdates.MinuteLocator(interval=10)
# locator = mdates.MinuteLocator(interval=10, byminute=10)
# locator = mdates.MinuteLocator(interval=10, byminute=[0,10,20,30,40,50])

plt.clf()
plt.gca().xaxis.set_major_formatter(formatter)
plt.gca().xaxis.set_major_locator(locator) 
plt.plot(x, y)
plt.grid(True)
plt.xlabel("time [min]")
plt.ylabel("Random number")
plt.show()

DateFormatter
一起创建以下轴标签:

但是,我希望仅在每整 10 分钟进行一次报价,即我希望在 15:30、15:40、15:50 等时间进行报价,而不是从 15:24 开始。所以我尝试了

locator = mdates.MinuteLocator(interval=10, byminute=10)

这给了我一个错误

ValueError: Invalid rrule byxxx generates an empty set.

但根据文档,您还可以指定一个 int 值或一个 int 列表。 但即使尝试使用整数列表

locator = mdates.MinuteLocator(interval=10, byminute=[0,10,20,30,40,50])

仍然给出同样的错误!

那么我该如何解决这个问题呢?

python matplotlib python-dateutil
1个回答
2
投票

如果您列出特定整数,我认为您不需要指定间隔。

更改此:

locator = mdates.MinuteLocator(interval=10, byminute=[0,10,20,30,40,50])

对此:

locator = mdates.MinuteLocator(byminute=[0,10,20,30,40,50])
© www.soinside.com 2019 - 2024. All rights reserved.