在matplotlib.pyplot中绘图时如何显示日期?

时间:2014-02-26 17:27:22

标签: python numpy matplotlib

我有这个python代码用于显示一些数字:

import matplotlib.pyplot as plt
import datetime
import numpy as np

x = np.array([datetime.datetime(2013, 9, i).strftime("%Y-%m-%d") for i in range(1,5)], 
            dtype='datetime64')
y = np.array([1,-1,7,-3])
plt.plot(x,y)
plt.axhline(linewidth=4, color='r')
plt.show()

结果图在x轴上的数字为0.0到3.0:

enter image description here

显示日期而不是这些数字的最简单方法是什么?优选地,格式为%b%d。

1 个答案:

答案 0 :(得分:5)

According to efiring,matplotlib不支持NumPy datetime64对象(至少尚未支持)。因此,将x转换为Python datetime.datetime对象:

x = x.astype(DT.datetime)

接下来,您可以像这样指定x轴刻度标记格式器:

xfmt = mdates.DateFormatter('%b %d')
ax.xaxis.set_major_formatter(xfmt)

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime as DT
import numpy as np

x = np.array([DT.datetime(2013, 9, i).strftime("%Y-%m-%d") for i in range(1,5)], 
            dtype='datetime64')
x = x.astype(DT.datetime)
y = np.array([1,-1,7,-3])
fig, ax = plt.subplots()
ax.plot(x, y)
ax.axhline(linewidth=4, color='r')
xfmt = mdates.DateFormatter('%b %d')
ax.xaxis.set_major_formatter(xfmt)
plt.show()

enter image description here