Python 如何在matplotlib中对x轴上的日期格式进行舍入

Python 如何在matplotlib中对x轴上的日期格式进行舍入,python,matplotlib,plot,Python,Matplotlib,Plot,我试图在另外两个填充的曲线之间绘制一条曲线,一旦我有了这两个“曲线”,我的x轴就会变得奇怪 这是我的MWE: import matplotlib.pyplot as plt from matplotlib import dates as mdates import datetime import numpy as np dates=[u'0600', u'0630', u'0700', u'0730', u'0800', u'0830', u'0900', u'0930', u'1000',

我试图在另外两个填充的曲线之间绘制一条曲线,一旦我有了这两个“曲线”,我的x轴就会变得奇怪

这是我的MWE:

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

dates=[u'0600', u'0630', u'0700', u'0730', u'0800', u'0830', u'0900', u'0930', u'1000', u'1030']#["0800","0830","0900"]

x=[datetime.datetime.strptime(h,'%H%M') for h in dates]
y=np.arange(len(x))
tmin=y/2.
tmax=y*2.

fig, ax = plt.subplots()
ax.plot(x,y,'r')
ax.fill_between(x,tmin,tmax)

hfmt = mdates.DateFormatter('%H:%M')
ax.xaxis.set_major_formatter(hfmt)

fig.autofmt_xdate()
plt.savefig('plot.png')
plt.show()

x轴应该是什么样子

可通过注释
绘图
填充
命令行之间的一个按钮轻松获得


你知道如何在第一个图形中使用第二个x轴吗?

最简单的方法可能是使用

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

好的,这就解决了输出问题。但我还是不明白为什么会附加什么?我不理解这个问题,关键是matplotlib会自动修改
xtickslabel
,所以四舍五入的数字变成29或59。如果我有这两个绘图,而如果我只绘制一个主题(
plot
fill\u-between
),则没有问题。我假设自动范围计算会以某种方式作出反应,将下限稍微向左移动。因此,滴答声的位置会发生变化。与正常数字相反,格式化程序不会取整,但始终会删除所有分辨率较低的信息。我同意,但为什么在添加绘图时它会移动我的轴?看起来像只虫子!