Python绘制交通流折线图详情
作者:居安_ 时间:2023-04-29 01:26:36
一、数据集下载
加州高速公路PEMS数据集
这里绘制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一个文件:
通过 data['data'] 即可对该数据集进行读取。我们也可以查看一下该数据的维度。
print(data['data'].shape)
其维度如下:
16992 = 59天×24小时×12(每五分钟统计一次流量数据),307为探测器数量,3为特征数。
2、折线图绘制
数据中包含的三个特征为(交通流量,平均速度,平均占用率),取出绘图需要的第一个特征(这里只绘制其中一个探测器的)。
flow = data['data'][:, 0, 0]
导入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()
绘制结果如下:
文章所以大部分的KPI都会遵循“Mary's Peak”模式,比如说使用公共交通工具出行的情况、外卖点餐情况。从上图可以看出,这里的交通流量是遵循这一模式的。
来源:https://blog.csdn.net/muAluo/article/details/125230979
标签:Python,绘制,折线图
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
有关Server.Mappath详细接触
2010-07-07 11:35:00
![](https://img.aspxhome.com/file/UploadPic/20107/7/2004351085047387-42s.gif)
python中的json总结
2022-03-07 15:51:30
教你利用python如何读取txt中的数据
2023-04-03 14:52:36
![](https://img.aspxhome.com/file/2023/0/66420_0s.png)
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
2024-05-05 09:13:21
pandas or sql计算前后两行数据间的增值方法
2022-08-08 09:36:30
C#访问PostGreSQL数据库的方法
2024-01-23 01:00:13
![](https://img.aspxhome.com/file/2023/5/88365_0s.jpg)
python装饰器实现对异常代码出现进行自动监控的实现方法
2021-05-29 16:52:13
![](https://img.aspxhome.com/file/2023/2/76902_0s.jpg)
Python 图片文字识别的实现之PaddleOCR
2022-03-12 19:07:58
![](https://img.aspxhome.com/file/2023/8/90498_0s.png)
基于Python获取docx/doc文件内容代码解析
2022-09-20 09:25:23
pandas中groupby操作实现
2023-04-15 19:26:56
![](https://img.aspxhome.com/file/2023/4/68874_0s.jpg)
SQLServer 循环批处理
2024-01-20 02:39:46
Python提取视频帧图片实例代码
2023-02-11 18:15:21
![](https://img.aspxhome.com/file/2023/5/115195_0s.jpg)
nodejs中的读取文件fs与文件路径path解析
2024-05-08 09:36:25
详解如何运行vue项目
2024-05-13 09:09:47
![](https://img.aspxhome.com/file/2023/2/126582_0s.png)
Python中给List添加元素的4种方法分享
2023-09-12 04:33:58
解决python中画图时x,y轴名称出现中文乱码的问题
2023-08-04 09:00:23
![](https://img.aspxhome.com/file/2023/2/92402_0s.jpg)
Python发送http请求解析返回json的实例
2022-04-11 03:38:28
大幅提升MySQL中InnoDB的全表扫描速度的方法
2024-01-19 20:58:42
![](https://img.aspxhome.com/file/2023/6/69836_0s.png)
MySQL截取和拆分字符串函数用法示例
2024-01-21 14:24:55
用原生js做单页应用
2024-04-16 09:51:27