机场的出租车问题折线图

news2024/9/20 9:11:59

分析并可视化机场离场车辆数数据

本文将详细介绍如何使用Python的正则表达式库re和绘图库matplotlib对机场离场车辆数数据进行分析和可视化。以下是具体步骤和代码实现。

数据资源:
链接:https://pan.baidu.com/s/1rU-PRhrVSXq-8YdR6obc6Q?pwd=1234
提取码:1234

1. 导入必要的库

首先,我们需要导入用于数据处理和绘图的库:

import re
import matplotlib.pyplot as plt
from datetime import datetime
import matplotlib.font_manager as fm

2. 读取文件内容

假设我们有两个文件,分别是郑州机场9月14上午原始数据.txt郑州机场9月14下午原始数据.txt,其中包含了机场的离场车辆数数据。我们需要读取这两个文件的内容并合并:

# 文件路径
file_paths = ['郑州机场9月14上午原始数据.txt', '郑州机场9月14下午原始数据.txt']

# 初始化数据列表
data = ''

# 读取文件内容
for file_path in file_paths:
    with open(file_path, 'r', encoding='utf-8') as file:
        data += file.read()  # 读取文件中的所有内容并合并
# 若没有文件,先用一下数据代替
# 示例数据
# data = """
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:40:19) 场内待运车辆数为:80 辆; 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:40:30) 场内待运车辆数为:80 辆; 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:40:41) 场内待运车辆数为:80 辆; 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:40:52) 场内待运车辆数为:80 辆; 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:41:04) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:41:15) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:41:26) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:41:39) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:41:50) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:42:01) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:42:12) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:42:22) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:42:34) 场内待运车辆数为:80 辆; 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:42:45) 场内待运车辆数为:80 辆; 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:42:57) 场内待运车辆数为:80 辆; 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:43:08) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:43:19) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:43:30) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:43:41) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:43:53) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:44:05) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:44:16) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:44:27) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:44:38) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:44:50) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:45:01) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辅辆; 前半小时离场车辆数为:1 辆;
# """

3. 使用正则表达式匹配数据

我们使用正则表达式来提取文件中的时间戳和前半小时离场车辆数。这里的正则表达式模式匹配类似于(2023-09-14 08:30:00)前半小时离场车辆数为:123 辆;的文本。

# 正则表达式匹配时间和前半小时离场车辆数
pattern = r"((\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})).*?前半小时离场车辆数为:(\d+) 辆;"
matches = re.findall(pattern, data)  # 使用正则表达式查找所有匹配的模式

4. 解析匹配结果

将匹配到的时间字符串转换为datetime对象,并将离场车辆数转换为整数:

# 解析匹配结果
timestamps = [datetime.strptime(match[0], "%Y-%m-%d %H:%M:%S") for match in matches]  # 将匹配到的时间字符串转换为datetime对象
leaving_counts = [int(match[1]) for match in matches]  # 将匹配到的离场车辆数转换为整数

5. 设置字体

为了支持中文显示,我们需要设置字体。这里假设我们使用的是SimHei字体:

# 设置字体
font_path = 'C:/Windows/Fonts/simhei.ttf'  # 你可以根据需要更改字体路径
font_prop = fm.FontProperties(fname=font_path)  # 创建字体属性对象

6. 绘制折线图

使用matplotlib绘制离场车辆数随时间变化的折线图:

# 绘制折线图
plt.figure(figsize=(10, 6))  # 设置图表大小
plt.plot(timestamps, leaving_counts, marker='o', markersize=1, linestyle='-', color='b')  # 绘制折线图,设置节点样式和颜色
plt.title("前半小时离场车辆数随时间的变化", fontproperties=font_prop)  # 设置图表标题
plt.xlabel("时间", fontproperties=font_prop)  # 设置X轴标签
plt.ylabel("前半小时离场车辆数", fontproperties=font_prop)  # 设置Y轴标签
plt.grid(True)  # 显示网格
plt.xticks(rotation=45, fontproperties=font_prop)  # 旋转X轴刻度标签以防止重叠
plt.yticks(fontproperties=font_prop)  # 设置Y轴刻度标签的字体
plt.tight_layout()  # 自动调整子图参数以适应图形区域

# 调整边距以确保字体不被遮盖
plt.subplots_adjust(left=0.15, bottom=0.2)  # 调整图表的左边距和下边距

# 保存图片
plt.savefig('离场车辆数变化图.png')  # 将图表保存为PNG文件

# 显示图表
plt.show()  # 显示图表

7. 完整代码

以下是完整的代码片段,包含了从读取数据到绘制并保存图表的所有步骤:

import re
import matplotlib.pyplot as plt
from datetime import datetime
import matplotlib.font_manager as fm

# 文件路径
file_paths = ['郑州机场9月14上午原始数据.txt', '郑州机场9月14下午原始数据.txt']

# 初始化数据列表
data = ''

# 读取文件内容
for file_path in file_paths:
    with open(file_path, 'r', encoding='utf-8') as file:
        data += file.read()  # 读取文件中的所有内容并合并

# 正则表达式匹配时间和前半小时离场车辆数
pattern = r"((\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})).*?前半小时离场车辆数为:(\d+) 辆;"
matches = re.findall(pattern, data)  # 使用正则表达式查找所有匹配的模式

# 解析匹配结果
timestamps = [datetime.strptime(match[0], "%Y-%m-%d %H:%M:%S") for match in matches]  # 将匹配到的时间字符串转换为datetime对象
leaving_counts = [int(match[1]) for match in matches]  # 将匹配到的离场车辆数转换为整数

# 设置字体
font_path = 'C:/Windows/Fonts/simhei.ttf'  # 你可以根据需要更改字体路径
font_prop = fm.FontProperties(fname=font_path)  # 创建字体属性对象

# 绘制折线图
plt.figure(figsize=(10, 6))  # 设置图表大小
plt.plot(timestamps, leaving_counts, marker='o', markersize=1, linestyle='-', color='b')  # 绘制折线图,设置节点样式和颜色
plt.title("前半小时离场车辆数随时间的变化", fontproperties=font_prop)  # 设置图表标题
plt.xlabel("时间", fontproperties=font_prop)  # 设置X轴标签
plt.ylabel("前半小时离场车辆数", fontproperties=font_prop)  # 设置Y轴标签
plt.grid(True)  # 显示网格
plt.xticks(rotation=45, fontproperties=font_prop)  # 旋转X轴刻度标签以防止重叠
plt.yticks(fontproperties=font_prop)  # 设置Y轴刻度标签的字体
plt.tight_layout()  # 自动调整子图参数以适应图形区域

# 调整边距以确保字体不被遮盖
plt.subplots_adjust(left=0.15, bottom=0.2)  # 调整图表的左边距和下边距

# 保存图片
plt.savefig('离场车辆数变化图.png')  # 将图表保存为PNG文件

# 显示图表
plt.show()  # 显示图表

通过以上步骤,我们实现了从原始数据文件中提取数据并绘制离场车辆数随时间变化的折线图。这样的方法不仅可以用于分析机场的交通情况,还可以应用于其他类似的数据分析场景。

8. 效果展示

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1911887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

干货:高水平论文写作思路与方法

前言:Hello大家好,我是小哥谈。高水平论文的写作需要扎实的研究基础和严谨的思维方式。同时,良好的写作技巧和时间管理也是成功的关键。本篇文章转载自行业领域专家所写的一篇文章,希望大家阅读后可以能够有所收获。🌈 目录 🚀1.依托事实/证据,通过合理的逻辑,…

每日刷题(二分查找,匈牙利算法,逆序对)

目录 1.Sarumans Army 2.Catch That Cow 3.Drying 4.P3386 【模板】二分图最大匹配 5. Swap Dilemma 1.Sarumans Army 3069 -- Sarumans Army (poj.org) 这道题就是要求我们在给的的位置放入 palantir,每个 palantir有R大小的射程范围,要求求出最少…

C# Bitmap类型与Byte[]类型相互转化详解与示例

文章目录 一、Bitmap类型转Byte[]类型使用Bitmap类的Save方法使用Bitmap类的GetBytes方法 二、Byte[]类型转Bitmap类型使用MemoryStream将Byte[]数组转换为Bitmap对象使用System.Drawing.Imaging.BitmapImage类 总结 在C#编程中,Bitmap类型和Byte[]类型之间的相互转…

【刷题汇总 -- 求最小公倍数、数组中的最长连续子序列、字母收集】

C日常刷题积累 今日刷题汇总 - day0081、求最小公倍数1.1、题目1.2、思路1.3、程序实现 -- 穷举法1.2、程序实现 -- 辗转相除法 2、数组中的最长连续子序列2.1、题目2.2、思路2.3、程序实现 3、字母收集3.1、题目3.2、思路3.3、程序实现 4、题目链接 今日刷题汇总 - day008 1、…

01:简易的电动车防盗报警器

简易的电动车防盗报警器 1、震动传感器模块的使用2、使用震动传感器模块控制继电器开关3、433M无线发射接收模块的使用 需要材料: 1、51单片机 2、震动传感器模块 3、继电器模块 4、高功率喇叭 5、433M无线发射接收模块 6、弱干杜邦线 1、震动传感器模块的使用 接好…

13 - matlab m_map地学绘图工具基础函数 - 介绍创建管理颜色映射的函数m_colmap和轮廓图绘制颜色条的函数m_contfbar

13 - matlab m_map地学绘图工具基础函数 - 介绍创建管理颜色映射的函数m_colmap和轮廓图绘制颜色条的函数m_contfbar 0. 引言1. 关于m_colmap2. 关于m_contfbar3. 结语 0. 引言 本篇介绍下m_map中用于创建和管理颜色映射函数(m_colmap)和 为轮廓图绘制颜…

大话光学原理:2.最短时间原理、“魔法石”与彩虹

一、最短时间原理 1662年左右,费马在一张信纸的边角,用他那著名的潦草笔迹,随意地写下了一行字:“光在两点间选择的路,总是耗时最少的。”这句话,简单而深邃,像是一颗悄然种下的种子&#xff0c…

EEG源定位(EEG Source Localization)

EEG源定位(EEG Source Localization)是一种用于确定大脑内部电活动来源的方法。通过在头皮上记录的电信号(EEG),源定位技术可以推断这些信号的起源,即确定大脑中的哪些区域产生了这些电活动。这对于理解大脑…

Java项目:基于SSM框架实现的中小型企业财务管理系统【ssm+B/S架构+源码+数据库+答辩PPT+开题报告+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的中小型企业财务管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单…

ESP32的I2S引脚及支持的音频标准使用说明

ESP32 I2S 接口 ESP32 有 2 个标准 I2S 接口。这 2 个接口可以以主机或从机模式,在全双工或半双工模式下工作,并且可被配置为 8/16/32/48/64-bit 的输入输出通道,支持频率从 10 kHz 到 40 MHz 的 BCK 时钟。当 1 个或 2 个 被配置为主机模式…

IEC62056标准体系简介-2.IEC62056标准体系及对象标识系统(OBIS)

1. IEC 62056标准体系 IEC 62056标准体系目前共包括六部分,见图1: 第61部分:对象标识系统第62部分:接口类第53部分:COSEM应用层第46部分:使用HDLC(High Level Data Link Control)协…

24吉林事业单位报名照上传通过别忘了这一步

24吉林事业单位报名照上传通过别忘了这一步 #吉林事业单位 #吉林三支一扶 #吉林事业编 #事业单位报名照片 #吉林事业单位考试 #吉林市事业单位

ChatGPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建技术

在过去几年中,人工智能领域的发展迅猛,尤其是大语言模型的应用,为各行各业带来了前所未有的创新与突破。从ChatGPT-3.5的推出到GPT Store的上线,再到最新的多模态交互ChatGPT-4o,OpenAI不断引领科技潮流,推…

vite+vue3整合less教程

1、安装依赖 pnpm install -D less less-loader2、定义全局css变量文件 src/assets/css/global.less :root {--public_background_font_Color: red;--publicHouver_background_Color: #fff;--header_background_Color: #fff;--menu_background: #fff; }3、引入less src/main.…

从数据仓库到数据湖(上):数据湖导论

文章目录 一、什么是数据湖?起源数据湖的特征 二、为什么要用数据湖?三、数据湖与数据仓库的区别数据仓库和数据湖的对比 四、数据湖本质数据存储架构数据处理工具:三类第一类工具第二类工具第三类工具 小结 五、总结六、参考资料 一、什么是…

x86芯片定制,Ethercat芯片定制,IP服务,适用于运动控制,工业总线等软硬一体机

x86芯片定制,Ethercat芯片定制 X86平台 我们的研发工程师已经积累了非常丰富的主板、整机设计经验,对接您的产品规格场景需求,快速交付样机,包含主板、BOX整机、平板电脑、CPCI等形态产品。降本、长生命周期、快速交付、及时响应…

01 | 基础架构:一条SQL查询语句是如何执行的?

此系列文章为极客时间课程《MySQL 实战 45 讲》的学习笔记! 引言 在了解 SQL 查询语句如何执行之前,先了解下MySQL 的基本架构示意图。 MySQL 分为 Server 层和引擎层。 Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 M…

华为机试HJ108求最小公倍数

华为机试HJ108求最小公倍数 题目: 想法: 要找到输入的两个数的最小公倍数,这个最小公倍数要大于等于其中最大的那个数值,遍历最大的那个数值的倍数,最大的最小公倍数就是输入的两个数值的乘积 input_number_list i…

PTA - sdut-使用函数求a+aa+aaa++⋯+aa.....aaa(n个a)之和

题目描述: 给定两个均不超过9的正整数a和n,要求:编写函数fn(a,n), 求aaaaaa⋯aa⋯aa(n个a)之和,fn须返回的是数列之和。 函数接口定义: def fn(a,n):其中, a 和 n 都是传入的参数…

1.Frida框架-Frida环境搭建

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:微尘网校 前置条件:需要科学上网 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F…