Python绘制交通流折线图详情
作者:居安_ 发布时间:2023-04-29 01:26:36
标签:Python,绘制,折线图
一、数据集下载
加州高速公路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


猜你喜欢
- pytorch定义新的自动求导函数在pytorch中想自定义求导函数,通过实现torch.autograd.Function并重写forwa
- 1 文件处理形式 近期由于处理大量数据,所以对于采用python进行处理文件的一些操作也打算整理一下;接下
- PDO::getAttributePDO::getAttribute — 取回一个数据库连接的属性(PHP 5 >= 5.1.0, P
- 每次和朋友聊天苦于没有表情包,而别人的表情包似乎是取之不尽、用之不竭。作为一个程序员哪能甘愿认输,于是做了一个表情包下载器供大家斗图。首先,
- Python 提供了两个级别访问的网络服务。:低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以
- asp按关键字查询XML的问题 '-------------------------------------------------
- 功能描述数据库间数据同步方式很多,在上篇博文中有总结。本文是用py程序实现数据同步。A数据库中有几十张表,要汇聚到B数据库中,且表结构一致,
- WordPress可以改造成twitter一样的微博网站,但是有一个坏处就是你要么用来做博客要么用来做微博,功能难兼得。相信大家在访问一些知
- 基于 python django源码前期准备安装库:pip install django-haystackpip install whoos
- 一、功能目标用户输入一个类似 1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568
- 一、目标之前无意中看到有某位博主写过人像动漫化这样的文章,看着还挺好玩,所以我也想尝试一下。利用百度智能云中的人工智能,对图片进行处理达到人
- 下面是一些有助于更有效地使用 SQL 事件探查器的提示和技巧。运行的跟踪过多如果 Microsoft? SQL Server? 实例运行得过
- Sys.path 指定用于模块搜索路径的字符串列表也可以通过sys模块的append方法在Python环境中增加搜索路径。Sys.path.
- 动画精灵和碰撞检测一、动画精灵动画精灵:四处移动的单个图像或图像部分称为动画精灵(sprite),pygame有一个特殊的模块帮助跟踪屏幕上
- 前言:大家在写代码的时候,经常会使用print打印日志方便排查问题,然而print的问题就是太过简单,缺少时间、日志级别等格式化信息。Pyt
- 一、Tensorflow安装1、Tensorflow介绍Tensorflow是广泛使用的实现机器学习以及其它涉及大量数学运算的算法库之一。T
- 发现问题项目需要,需要删除文件夹中的冗余图片。涉及图像文件名的操作,图像文件名存储在list中python list删除元素有remove(
- 每个PHP脚本都限制了执行时间,所以我们需要通过 set_time_limit 来设置一个脚本的执行时间为无限长;然后使用 flush()
- 一个客户提供一个股价的信息,要求放在页面上,显示一些数据,需要从远程获取xml,然后解析写在网页上,开始不会觉得很难,其实蛮简单的,先用ja
- 目录1. 前言2. Echarts3. Pyecharts3-1 安装依赖3-2 拷贝