使用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()
这会产生一个图像,并根据需要分布气泡。