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一个文件:

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绘制交通流折线图详情

文章所以大部分的KPI都会遵循“Mary's Peak”模式,比如说使用公共交通工具出行的情况、外卖点餐情况。从上图可以看出,这里的交通流量是遵循这一模式的。

来源:https://blog.csdn.net/muAluo/article/details/125230979

标签:Python,绘制,折线图
0
投稿

猜你喜欢

  • 有关Server.Mappath详细接触

    2010-07-07 11:35:00
  • python中的json总结

    2022-03-07 15:51:30
  • 教你利用python如何读取txt中的数据

    2023-04-03 14:52:36
  • JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】

    2024-05-05 09:13:21
  • pandas or sql计算前后两行数据间的增值方法

    2022-08-08 09:36:30
  • C#访问PostGreSQL数据库的方法

    2024-01-23 01:00:13
  • python装饰器实现对异常代码出现进行自动监控的实现方法

    2021-05-29 16:52:13
  • Python 图片文字识别的实现之PaddleOCR

    2022-03-12 19:07:58
  • 基于Python获取docx/doc文件内容代码解析

    2022-09-20 09:25:23
  • pandas中groupby操作实现

    2023-04-15 19:26:56
  • SQLServer 循环批处理

    2024-01-20 02:39:46
  • Python提取视频帧图片实例代码

    2023-02-11 18:15:21
  • nodejs中的读取文件fs与文件路径path解析

    2024-05-08 09:36:25
  • 详解如何运行vue项目

    2024-05-13 09:09:47
  • Python中给List添加元素的4种方法分享

    2023-09-12 04:33:58
  • 解决python中画图时x,y轴名称出现中文乱码的问题

    2023-08-04 09:00:23
  • Python发送http请求解析返回json的实例

    2022-04-11 03:38:28
  • 大幅提升MySQL中InnoDB的全表扫描速度的方法

    2024-01-19 20:58:42
  • MySQL截取和拆分字符串函数用法示例

    2024-01-21 14:24:55
  • 用原生js做单页应用

    2024-04-16 09:51:27
  • asp之家 网络编程 m.aspxhome.com