我正在使用pandas .plot()绘制时间序列,并希望看到每个月都显示为x-tick。
数据集结构x1c 0d1x
下面是.plot()的结果
我试图使用其他文章中的例子和matplotlib documentation,并做一些类似的事情,
ax.xaxis.set_major_locator(
dates.MonthLocator(revenue_pivot.index, bymonthday=1,interval=1))
但这消除了所有的蜱虫:(
我也试过传递xticks = df.index
,但它没有改变任何东西。
在x轴上显示更多刻度的正确方法是什么?
5条答案
按热度按时间56lgkhnf1#
不需要向
MonthLocator
传递任何参数。请确保根据@Rotkiv的回答在df.plot()
调用中使用x_compat
。set_major_locator
化x轴lhcgjxsq2#
您还可以使用pandas
Timestamp
对象的属性“手动”格式化pandasDateTimeIndex
的x轴刻度和标签。我发现这比使用来自
matplotlib.dates
的定位器要容易得多,matplotlib.dates
适用于其他日期时间格式,而不是pandas(如果我没有弄错的话),因此如果日期没有相应地转换,有时会显示出奇怪的行为。下面是一个通用示例,它基于pandas
Timestamp
对象的属性将每个月的第一天显示为标签:产量:
希望这对你有帮助!
lvjbypge3#
正确的方法是使用x_compat参数,可以抑制自动刻度分辨率调整
df.A.plot(x_compat=True)
jv2fixgn4#
如果你只想显示更多的tick,你也可以深入研究pd.plotting._converter的结构:
绘图后,
formatter
是一个TimeSeries_DateFormatter
,_set_default_format
已经被调用,所以self.plot_obj.date_axis_info is not None
。现在可以根据自己的喜好操纵结构化数组.date_axis_info
,即包含更少的b''
和更多的b'%b'
sg3maiej5#
删除刻度标签:
降低
every_nth
以包含更多标签,提高every_nth
以保留更少标签。