当前位置: 首页>>技术问答>>正文


在Python中使用Matplotlib绘制时间

有一个格式为(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()

产生的图像:

python,graph,plot,matplotlib


这和散点图一样:

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()

产生一个类似这样的图像:

python,graph,plot,matplotlib

参考资料

本文由《纯净天空》出品。文章地址: https://vimsky.com/article/3728.html,未经允许,请勿转载。