仅在半小时和完整小时显示Matplotlib Xaxis标签

时间:2017-03-31 13:31:17

标签: python matplotlib

我有一个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,...取决于数据何时开始。如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用正确指出的byminute论证是正确的方法。

此代码有效:

ax.xaxis.set_major_locator(mdates.MinuteLocator(byminute=[0,30])

现在只有一半和几个小时会显示标签。

我最初测试了byminute,但未删除interval=30,这会导致错误:

  

ValueError:无效的rrule byxxx会生成一个空集。

因此,同时使用参数byminuteinterval不起作用,无论如何都不是必需的。

答案 1 :(得分:0)

您可以将MinuteLocatorbyminute参数一起使用:

mdates.MinuteLocator(byminute=[0,30])

这会将定位器固定到每一个半小时。