这不是重复的,因为类似问题的现有答案并不能准确描述我所需要的。Matplotlib内部有很好的格式化程序,我喜欢使用它们:
ax.xaxis.set_major_locator(matplotlib.dates.MonthLocator())
ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%b%y'))
他们让我绘制这样的股票市场图表:
这是我需要的,但它有一个问题:周末。他们是目前在x轴,使我的图表有点难看。
关于这个问题的其他问题给予创建自定义格式化程序的建议。他们展示了这样的格式化程序的例子。但是没有一个像matplotlib那样做漂亮的格式化:
五月十九日,六月十九日,七月十九日...
我指的是这行代码:
ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%b%y'))
我的问题是:请帮我格式化x轴,就像matplotlib做的那样:May19,Jun19,Jul19.
2条答案
按热度按时间zzwlnbp81#
你几乎总是可以做的是与Nic Wanavit建议的类似的事情。手动设置你的标签,这取决于你在轴上需要什么。
特别是在这种情况下,图看起来有点难看,因为你的数据中有没有提供实际数据的时间跨度(在这种情况下是周末),所以pyplot只会将这些点与x轴的相应长度连接起来。
然后你可以做的就是把你的数据等距离地绘制出来--如果数据是每天的,这是正确的--否则可以考虑使用pandas bultin插值法来插值。
为了避免pyplot自动检测索引,我不得不这样做:
在这里,股票的所有收盘价都存储在一个名为'close' obvsl的列中。您可以相应地绘制此列。然后您可以通过以下方式获得所有创建的报价:
根据需要调整它们,
然后再把它们放回图表上,
然后你需要稍微“更新”图。还要记住,这可能会导致标签的位置很奇怪,就像文档中所说的那样。这是一种变通方法,但对我来说很好,因为它感觉很自然地绘制数据,而不是在周末制作一些数据。
迎接
i86rm4rw2#
设置x刻度,假设您在数据框行df“dates”中有dates变量]