我想使用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一起创建以下轴标签:

enter image description here

然而,我希望每隔整整10分钟才进行一次勾选,即我希望在15:30、15:40、15:50等时间进行勾选,而不是从15:24开始.所以我试着

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

这给了我一个错误

ValueError: Invalid rrule byxxx generates an empty set.

但是根据documentation,你也可以指定一个int值或一个int列表. 但即使try 使用int列表,

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

它仍然给出相同的错误!

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

推荐答案

应该

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

事实上就是

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

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

Python相关问答推荐

查找3D数组中沿一个轴的相同值序列的长度(与行程长度编码相关)

日程优化问题不知道更好的方式来呈现解决方案- Python / Gekko

在后台运行的Python函数

"如果发生特定错误,返回值

过载功能是否包含Support Int而不是Support Int?

Pythind 11无法弄清楚如何访问tuple元素

具有多个选项的计数_匹配

重新匹配{ }中包含的文本,其中文本可能包含{{var}

从收件箱中的列中删除html格式

为什么这个带有List输入的简单numba函数这么慢

如何在类和classy-fastapi -fastapi- followup中使用FastAPI创建路由

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

加速Python循环

在vscode上使用Python虚拟环境时((env))

计算每个IP的平均值

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

在www.example.com中使用`package_data`包含不包含__init__. py的非Python文件

我的字符串搜索算法的平均时间复杂度和最坏时间复杂度是多少?

使用Python从rotowire中抓取MLB每日阵容

为什么'if x is None:pass'比'x is None'单独使用更快?