Matplotlib X轴按小时显示

Matplotlib X轴日期显示实现了日期的格式显示,接着下来实现一个简单的按小时显示,比如很多天气预报都是采用按小时进行温度提示,如下图:

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()函数来标记数据点的位置。

通过上面简单的几行代码,就可以完成了按小时显示的时间曲线图了。整个结果如下:

Matplotlib X轴按小时显示

整个例子的代码如下:

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()
赞(0)
未经允许不得转载:极客笔记 » Matplotlib X轴按小时显示
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址