我有一个关于plot
功能的问题,当X轴是一个日期。
- 设置**
我有两个时间序列dt
和x
,其中dt
是datetime.datetime
值的列表,x
是numpy
数组对象。
dt =
[datetime.datetime(1996, 12, 3, 0, 0),
datetime.datetime(1996, 12, 4, 0, 0),
...,
datetime.datetime(2015, 6, 5, 0, 0),
datetime.datetime(2015, 6, 8, 0, 0)]
x =
array([29.06262, 29.26933, ..., 208.41999, 208.44532])
并且两者具有相同的长度。
当我将它们绘制为:
ax.plot(dt, x, color='black', lw=2)
我得到一个图表,其中有X标记作为他们的年份(例如1994, 1998, 2002, 2006, 2010, 2014
)。
经过一些缩放,X-Tick标签开始很好地显示月份(例如Aug 2009, Oct 2009, Dec 2009, Feb 2010, Apr 2010, Jun 2010
)。
在进一步缩放之后,X-Tick标签再次很好地开始显示日期(例如Jan 14 2010, Jan 21 2010, Jan 28 2010, Feb 04 2010, Feb 11 2010, Feb 18 2010
)。
- 问题**
现在,我正在尝试绘制一个自定义图表(例如。比如使用LineCollection
)而不是使用默认的plot
。
我怀疑我需要使用ax.xaxis.set_major_locator(???)
和ax.xaxis.set_major_formatter(???)
来获得与默认plot
函数相同的X-Axis特性。
我需要提供什么(即???
)到ax.xaxis.set_major_locator(???)
和ax.xaxis.set_major_formatter(???)
?
1条答案
按热度按时间ipakzgxi1#
是的,你的假设是对的:您必须手动设置定位器和格式化程序。“常规”的在
matplotlib.ticker
中可用,与日期相关的在matplotlib.dates
中可用。有很多固定的(例如:WeekdayLocator、MicrosecondLocator等),而且还有使用plot
时获得的自动定位器。这样就可以了:
进一步阅读:http://matplotlib.org/api/dates_api.html
附加:
小心你的日期列表:matplotlib有一个内部的日期/时间表示(天数作为浮点数),因此在绘图之前需要转换日期时间对象。在
plot
中,这种转换会自动进行,对于自定义图形,您可能需要自己使用matplotlib.dates.date2num
进行转换。