我希望x轴刻度日期标签居中于刻度线之间,而不是像下面的图片一样居中于刻度线。
我已经阅读了文档,但并没有成功-有人知道如何做到这一点吗?
如果有帮助,以下是我用于x轴刻度格式化的所有内容:
day_fmt = '%d'
myFmt = mdates.DateFormatter(day_fmt)
ax.xaxis.set_major_formatter(myFmt)
ax.xaxis.set_major_locator(matplotlib.dates.DayLocator(interval=1))
for tick in ax.xaxis.get_major_ticks():
tick.tick1line.set_markersize(0)
tick.tick2line.set_markersize(0)
tick.label1.set_horizontalalignment('center')
a.xaxis.get_majorticklabels()
返回一个可迭代对象,您可以使用类似for tl in a.xaxis.get_majorticklabels()
的语句进行循环。但请注意,这个列表的元素并不像您期望的那样是字符串,而是matplotlib.text.Text
对象。要获取字符串,您需要使用类似[tl.get_text() for tl in a.xaxis.get_majorticklabels()]
的语句。但重要的一点是,这些值直到绘图实际完成后才确定。因此,它们并不是获取标签的好方法。最好直接从数据中获取值。 - jedwardsax.xaxis.set_minor_formatter(myFmt)
ax.xaxis.set_minor_locator(matplotlib.dates.HourLocator(interval=12))
并将我的主要格式化程序更改为您所做的方式,ax.xaxis.set_major_formatter(ticker.NullFormatter())
但出于某种原因它并没有隐藏主要刻度标签,我可能还漏掉了其他什么吗? - Osmond Bishopa.set_xticks
和a.set_xticklabels
更轻松地完成这个任务。两者都有一个可选的布尔参数叫做 minor,使它们影响到次要刻度线,例如a.set_xticklabels(''); x.set_xticks([1.5,2.5,3.5,4.5,5.5],minor=True); a.set_xticklabels(['1','2','3','4','5'],minor=True)
。 - Erik