温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python如何绘制交通流折线图

发布时间:2022-06-15 11:44:49 来源:亿速云 阅读:155 作者:iii 栏目:开发技术

这篇文章主要介绍了Python如何绘制交通流折线图的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python如何绘制交通流折线图文章都会有所收获,下面我们一起来看看吧。

一、数据集下载

这里绘制PEMS04中的交通流量数据。该数据集中包含旧金山2018年1月1日至2月28日的29条道路上307个探测器每五分钟收集的数据。

二、折线图绘制

1、解压npz文件

npz是一种numpy文件存储的压缩格式,可使用numpy进行读取。

allow_pickle=True用于防止numpy版本过高带来的错误。

data.files查看压缩文件下的所有文件。

import numpy as np
data = np.load(数据集存放地址, allow_pickle=True)
print(data.files)

可以看到压缩文件下只有data一个文件:

Python如何绘制交通流折线图

通过 data['data'] 即可对该数据集进行读取。我们也可以查看一下该数据的维度。

print(data['data'].shape)

其维度如下:

16992 = 59天×24小时×12(每五分钟统计一次流量数据),307为探测器数量,3为特征数。

Python如何绘制交通流折线图

2、折线图绘制

数据中包含的三个特征为(交通流量,平均速度,平均占用率),取出绘图需要的第一个特征(这里只绘制其中一个探测器的)。

flow = data['data'][:, 0, 0]

Python如何绘制交通流折线图

 导入matplotlib包,通过pyplot来绘制最简单的折线图。

import matplotlib.pyplot as plt

由于希望观测到工作日的流量变化,我们将横坐标替换为周一至周日。旧金山2018年1月1日为周一。

绘制的全部代码如下:

import numpy as np
import matplotlib.pyplot as plt
data = np.load(文件路径, allow_pickle=True)
flow = data['data'][:, 0, 0]
print(len(flow))
week = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
x = []
for i in range(59):
    x.append(week[(i + 1) % 7])
y = []
sum = 0
for i in range(len(flow)):
    if i == 0 or (i + 1) % 288 != 0:
        sum += flow[i]
    else:
        y.append(sum)
        sum = 0
 
fig = plt.figure(figsize=(15, 5))   # 图片宽度设置的大一些
plt.title('traffic flow in San Francisco')
plt.xlabel('day')
plt.ylabel('flow')
plt.xticks(np.arange(59), x)
plt.plot(np.arange(59), y, linestyle='-')
fig.autofmt_xdate(rotation=45)  # x轴的刻度标签逆时针旋转45度
plt.show()

绘制结果如下:

Python如何绘制交通流折线图

关于“Python如何绘制交通流折线图”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python如何绘制交通流折线图”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI