Python matplotlib-我应该使用什么样的集合定位器

Python matplotlib-我应该使用什么样的集合定位器,python,matplotlib,Python,Matplotlib,当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 =

当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标签很好地开始显示月份(例如2009年8月、2009年10月、2009年12月、2010年2月、2010年4月、2010年6月)

进一步缩放后,X-Tick标签再次很好地开始显示日期(例如2010年1月14日、2010年1月21日、2010年1月28日、2010年2月04日、2010年2月11日、2010年2月18日)

问题

现在,我正在尝试绘制自定义图表(例如,使用
LineCollection
),而不是使用默认的
绘图

我怀疑我需要使用
ax.xaxis.set_major\u locator(???)
ax.xaxis.set_major\u formatter(???)
来获得与默认
plot
函数中相同的X轴功能


我需要向
ax.xaxis.set\u major\u locator(?)
ax.xaxis.set\u major\u formatter(?)
提供什么(即

是的,您的假设是正确的:您必须手动设置定位器和格式化程序。在
matplotlib.ticker
中提供了“常规”选项,在
matplotlib.dates
中提供了与日期相关的选项。固定定位器有很多种(例如,工作日定位器、微秒定位器等),但也有使用
绘图时自动获得的定位器

因此,这应该做到:

import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# all your fancy plotting code

ax.xaxis.set_major_locator(mdates.AutoDateLocator())
ax.xaxis.set_major_formatter(mdates.AutoDateFormatter())

plt.show()
进一步阅读:

额外: 请注意日期时间列表:matplotlib有一个内部日期/时间表示形式(浮动天数),因此在打印之前需要转换日期时间对象。在
plot
中,此转换自动进行,对于自定义图形,您可能需要自己进行转换