有一个格式为(HH:MM:SS.mmmmmm)的时间戳数组和另一个浮点数数组,每个浮点数都对应于时间戳timestamp数组中的一个时间戳。
可以使用Matplotlib绘制x轴上的时间和y轴上的数字吗?
我试图这样做,但不知到什么原因,它只接受浮点数数组。到底应该怎么绘制时间轴呢?
最佳解决方法
必须先将时间戳转换为Python datetime 对象(使用datetime.strptime )。然后使用date2num 将日期转换为matplotlib格式。
使用plot_date 绘制日期和值:
dates = matplotlib.dates.date2num(list_of_datetimes)
matplotlib.pyplot.plot_date(dates, values)
次佳解决方法
您也可以使用pyplot.plot绘制时间戳和值对(在从字符串表示中解析它们之后)。 (这个做法,使用matplotlib版本1.2.0和1.3.1测试过)
例:
import datetime
import random
import matplotlib.pyplot as plt
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.plot(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
plt.show()
产生的图像:
这和散点图一样:
import datetime
import random
import matplotlib.pyplot as plt
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.scatter(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
plt.show()
产生一个类似这样的图像:
参考资料
- Plotting time in Python with Matplotlib
|