我有一个matplotlib图表,其时间轴为x轴(时间戳由matplotlib.dates.date2num()
转换)。
我想显示一个带有标记的网格,标记每半个小时和整个小时,如下所示:10:00,10:30,11:00,......
要格式化标签间隔,请使用以下代码行:
import matplotlib.dates as mdates
ax.xaxis.set_major_locator(mdates.MinuteLocator(interval=30))
问题是 - 数据不会在完整或半小时内开始。所以我得到的只是正确的间隔,但是从每一半和整个小时都移开了。即10:17,10:47,11:17,...取决于数据何时开始。如何解决这个问题?
答案 0 :(得分:0)
使用正确指出的byminute
论证是正确的方法。
此代码有效:
ax.xaxis.set_major_locator(mdates.MinuteLocator(byminute=[0,30])
现在只有一半和几个小时会显示标签。
我最初测试了byminute
,但未删除interval=30
,这会导致错误:
ValueError:无效的rrule byxxx会生成一个空集。
因此,同时使用参数byminute
和interval
不起作用,无论如何都不是必需的。
答案 1 :(得分:0)
您可以将MinuteLocator
与byminute
参数一起使用:
mdates.MinuteLocator(byminute=[0,30])
这会将定位器固定到每一个半小时。