使用Matplotlib在Python中绘制时间

我有一个格式(HH:MM:SS.mmmmmm)和另一个浮点数数组,每个对应于timestamp数组中的值的时间戳数组。

我可以使用Matplotlib绘制x轴上的时间和y轴上的数字吗?

我试图,但不知何故,它只接受浮动arrays。 我怎样才能得到它的时间? 我需要以任何方式修改格式吗?

您必须先将时间戳转换为Python datetime对象(使用datetime.strptime )。 然后使用date2num将date转换为matplotlib格式。

使用plot_date绘制date和值:

 dates = matplotlib.dates.date2num(list_of_datetimes) matplotlib.pyplot.plot_date(dates, values) 

您也可以使用pyplot.plot (在从string表示中parsing它们之后)绘制时间戳和值对。 (使用matplotlib版本1.2.0和1.3.1进行testing)

例:

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

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

散点图

7年后,这个代码帮助了我。 然而,我的时代仍然没有正确显示。

在这里输入图像描述

使用Matplotlib 2.0.0,我不得不添加下面一段代码来编辑matplotlib中x轴刻度标签的date格式 。

 import matplotlib.dates as mdates myFmt = mdates.DateFormatter('%d') ax.xaxis.set_major_formatter(myFmt) 

我将格式更改为(%H:%M)并正确显示时间。 在这里输入图像描述

都要感谢社区。

我遇到了麻烦,使用matplotlib版本:2.0.2。 从上面运行示例,我得到了一组居中的气泡。

图中心的泡沫堆栈

我通过添加另一行来“解决”问题:

 plt.plot([],[]) 

整个代码片段变成:

 import datetime import random import matplotlib.pyplot as plt import matplotlib.dates as mdates # make up some data x = [datetime.datetime.now() + datetime.timedelta(minutes=i) for i in range(12)] y = [i+random.gauss(0,1) for i,_ in enumerate(x)] # plot plt.plot([],[]) plt.scatter(x,y) # beautify the x-labels plt.gcf().autofmt_xdate() myFmt = mdates.DateFormatter('%H:%M') plt.gca().xaxis.set_major_formatter(myFmt) plt.show() plt.close() 

这会产生一个图像,并根据需要分布气泡。

随时间分布的气泡图