Matplotlib X轴日期显示实现了日期的格式显示,接着下来实现一个简单的按小时显示,比如很多天气预报都是采用按小时进行温度提示,如下图:
可以看到,X轴的坐标是按小时进行增加,然后曲线里有数据点,再连接起来的曲线。要产生这样的格式的图,matplotlib又要怎么样来编写呢?
其实要实现这种格式的显示是比较简单的,首先修改X轴的主刻度显示:
host.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
这里设置为按小时和分钟显示。
接着生产按小时增加数据:
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
x数据是从当前时间开始,按1小时的方式来增加,总共12个小时。y轴的数据是随机生成的数据。
host.plot_date(x,y, 'b-')
host.scatter(x, y, c = 'b')
有了数据之后,就可以先把曲线连接起来,再接着调用scatter()函数来标记数据点的位置。
通过上面简单的几行代码,就可以完成了按小时显示的时间曲线图了。整个结果如下:
整个例子的代码如下:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime
import random
#
fig, host = plt.subplots() #创建子图
host.grid(False)
#
host.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
host.plot_date(x,y, 'b-')
host.scatter(x, y, c = 'b')
fig.autofmt_xdate()
plt.tight_layout()
plt.show()