当前位置: 首页 > news >正文

基于Python的北京天气数据可视化分析

项目用到库

import numpy as np
import pandas as pd
import datetime
from pyecharts.charts import Line
from pyecharts.charts import Boxplot
from pyecharts.charts import Pie,Grid
from pyecharts import options as opts
from pyecharts.charts import Calendar

1.2018 年北京AQI全年走势图

代码如下:

# 读取数据
df = pd.read_csv('beijing_AQI_2018.csv')
attr = df['Date'].tolist()  # 将 Date 转换为列表
v1 = df['AQI'].tolist()  # 将 AQI 转换为列表# 创建折线图
line = (Line().add_xaxis(attr).add_yaxis("AQI值:", v1, is_smooth=True, areastyle_opts=opts.AreaStyleOpts(opacity=0.3, color="#000"), markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),opts.MarkPointItem(type_="min", name="最小值")])).set_global_opts(title_opts=opts.TitleOpts(title="2018年北京AQI全年走势图", pos_top='5%', pos_left='center'),xaxis_opts=opts.AxisOpts(type_="category"),yaxis_opts=opts.AxisOpts(type_="value"))
)# 将图表渲染到 HTML 文件
line.render("./2018年北京AQI全年走势图.html")

结果如下: 

2.2018 年北京PM2.5全年走势图

代码如下:

# 读取数据
df = pd.read_csv('beijing_AQI_2018.csv')
attr = df['Date'].tolist()  # 将 Date 转换为列表
v1 = df['PM'].tolist()  # 将 PM 转换为列表# 创建折线图
line = (Line().add_xaxis(attr).add_yaxis("PM2.5值:", v1, is_smooth=True, areastyle_opts=opts.AreaStyleOpts(opacity=0.3, color="#000"), markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),opts.MarkPointItem(type_="min", name="最小值")])).set_global_opts(title_opts=opts.TitleOpts(title="2018年北京PM2.5全年走势图", pos_top='5%', pos_left='center'),xaxis_opts=opts.AxisOpts(type_="category"),yaxis_opts=opts.AxisOpts(type_="value"))
)# 将图表渲染到 HTML 文件
line.render("./2018年北京PM2.5全年走势图.html")

结果如下:

3.2018 年北京月均AQI走势图

代码如下:

# 读取数据
df = pd.read_csv('beijing_AQI_2018.csv')# 提取 Date 和 AQI 的值
dom = df[['Date', 'AQI']]# 提取月份
df['month'] = df['Date'].apply(lambda x: x.split('/')[1])# 根据月份分组并计算每月的 AQI 平均值
month_com = df.groupby('month')['AQI'].mean().reset_index()# 排序月份
month_com = month_com.sort_values(by='month')# 构造月份标签
attr = ["{}月".format(i) for i in range(1, 13)]# 获取每月的 AQI 平均值
v1 = month_com['AQI'].tolist()
v1 = ["{}".format(int(i)) for i in v1]# 创建折线图
line = (Line().add_xaxis(attr).add_yaxis("AQI月均值", v1, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),opts.MarkPointItem(type_="min", name="最小值")])).set_global_opts(title_opts=opts.TitleOpts(title="2018年北京月均AQI走势图", pos_top='5%', pos_left='center'),xaxis_opts=opts.AxisOpts(type_="category"),yaxis_opts=opts.AxisOpts(type_="value"))
)# 渲染图表到 HTML 文件
line.render("./2018年北京月均AQI走势图.html")

结果如下:

4.2018 年北京月均PM2.5走势图

代码如下:

# 读取数据
df = pd.read_csv('beijing_AQI_2018.csv')# 提取 Date 和 PM 的值
dom = df[['Date', 'PM']]# 提取月份
df['month'] = df['Date'].apply(lambda x: x.split('/')[1])# 根据月份分组并计算每月的 PM 平均值
month_com = df.groupby('month')['PM'].mean().reset_index()# 排序月份
month_com = month_com.sort_values(by='month')# 构造月份标签
attr = ["{}月".format(i) for i in range(1, 13)]# 获取每月的 PM 平均值
v1 = month_com['PM'].tolist()
v1 = ["{}".format(int(i)) for i in v1]# 创建折线图
line = (Line().add_xaxis(attr).add_yaxis("PM2.5月均值", v1, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),opts.MarkPointItem(type_="min", name="最小值")])).set_global_opts(title_opts=opts.TitleOpts(title="2018年北京月均PM2.5走势图", pos_top='5%', pos_left='center'),xaxis_opts=opts.AxisOpts(type_="category"),yaxis_opts=opts.AxisOpts(type_="value"))
)# 渲染图表到 HTML 文件
line.render("./2018年北京月均PM2.5走势图.html")

结果如下:

5.2018年北京季度AQI箱形图

代码如下:

# 读取数据
df = pd.read_csv('beijing_AQI_2018.csv')# 提取 Date 和 AQI 的值
dom = df[['Date', 'AQI']]
data = [[], [], [], []]
dom1, dom2, dom3, dom4 = data# 根据季度提取 AQI 值
for date, aqi in zip(dom['Date'], dom['AQI']):month = int(date.split('/')[1])if month in [1, 2, 3]:dom1.append(aqi)elif month in [4, 5, 6]:dom2.append(aqi)elif month in [7, 8, 9]:dom3.append(aqi)else:dom4.append(aqi)# 创建箱形图
boxplot = Boxplot()# 设置 x 轴和 y 轴数据
x_axis = ['第一季度', '第二季度', '第三季度', '第四季度']
y_axis = [dom1, dom2, dom3, dom4]
y_axis = boxplot.prepare_data(y_axis)# 添加数据到箱形图
boxplot.add_xaxis(x_axis)
boxplot.add_yaxis("AQI", y_axis)# 设置图表全局选项
boxplot.set_global_opts(title_opts=opts.TitleOpts(title="2018年北京季度AQI箱形图", pos_left='center', pos_top='6%'))# 渲染图表到 HTML 文件
boxplot.render("./2018年北京季度AQI箱形图.html")

结果如下:

6.2018年北京季度PM2.5箱形图

代码如下:

# 读取数据
df = pd.read_csv('beijing_AQI_2018.csv')# 提取 Date 和 PM 的值
dom = df[['Date', 'PM']]
data = [[], [], [], []]
dom1, dom2, dom3, dom4 = data# 根据季度提取 PM 值
for date, pm in zip(dom['Date'], dom['PM']):month = int(date.split('/')[1])if month in [1, 2, 3]:dom1.append(pm)elif month in [4, 5, 6]:dom2.append(pm)elif month in [7, 8, 9]:dom3.append(pm)else:dom4.append(pm)# 创建箱形图
boxplot = Boxplot()# 设置 x 轴和 y 轴数据
x_axis = ['第一季度', '第二季度', '第三季度', '第四季度']
y_axis = [dom1, dom2, dom3, dom4]
y_axis = boxplot.prepare_data(y_axis)# 添加数据到箱形图
boxplot.add_xaxis(x_axis)
boxplot.add_yaxis("PM2.5", y_axis)# 设置图表全局选项
boxplot.set_global_opts(title_opts=opts.TitleOpts(title="2018年北京季度PM2.5箱形图", pos_left='center', pos_top='6%'))# 渲染图表到 HTML 文件
boxplot.render("./2018年北京季度PM2.5箱形图.html")

结果如下:

7.2018年北京全年空气质量情况

代码如下:

# 读取数据
df = pd.read_csv('beijing_AQI_2018.csv')# 根据 Quality_grade 分组
rank_message = df.groupby(['Quality_grade'])# 计算每个 Quality_grade 的频数
rank_com = rank_message['Quality_grade'].agg(['count'])
rank_com.reset_index(inplace=True)  # 重置索引
rank_com_last = rank_com.sort_values('count', ascending=False)  # 从大到小排序# 提取 Quality_grade 和对应的频数
attr = rank_com_last['Quality_grade'].tolist()
v1 = rank_com_last['count'].tolist()# 创建饼图
pie = (Pie().add("", [list(z) for z in zip(attr, v1)], radius=["40%", "75%"], label_opts=opts.LabelOpts(is_show=True, formatter="{b}: {d}%")).set_global_opts(title_opts=opts.TitleOpts(title="2018年北京全年空气质量情况", pos_left='center', pos_top='0'),legend_opts=opts.LegendOpts(is_show=True, orient="vertical", pos_left="left", pos_top="10%"))
)# 渲染图表到 HTML 文件
pie.render('./2018年北京全年空气质量情况.html')

结果如下:

8.2018年北京PM2.5指数日历图

代码如下:

# Read data from 'beijing_AQI_2018.csv'
df = pd.read_csv('beijing_AQI_2018.csv')# Extract 'Date' and 'PM' columns
dom = df[['Date', 'PM']]list1 = []# Compress the date and PM values into a list of lists
for i, j in zip(dom['Date'], dom['PM']):time_list = i.split('/')time = datetime.date(int(time_list[0]), int(time_list[1]), int(time_list[2]))PM = int(j)list1.append([str(time), PM])# Create a calendar chart
calendar = (Calendar(init_opts=opts.InitOpts(width="800px", height="400px")).add(series_name="2018年北京PM2.5指数日历图",yaxis_data=list1,calendar_opts=opts.CalendarOpts(range_="2018"),).set_global_opts(title_opts=opts.TitleOpts(title="2018年北京PM2.5指数日历图", pos_left="center",pos_top='50%'),visualmap_opts=opts.VisualMapOpts(max_=300, min_=0, orient="horizontal", is_piecewise=True,pos_top='60%',  # 将视觉映射放置在图表的顶部pos_left='center'  # 将视觉映射放置在图表的水平居中位置),)
)# Render the chart to an HTML file
calendar.render('./2018年北京PM2.5指数日历图.html')

结果如下:

9.2018 年北上广深AQI全年走势图

代码如下:


citys = ['beijing', 'shanghai', 'guangzhou', 'shenzhen']
cityes_AQI = []# 遍历四个城市的数据
for city in citys:filename = city + '_AQI' + '_2018.csv'aqi_data = pd.read_csv(filename)# 提取日期和AQI指数两列内容get_data = aqi_data[['Date', 'AQI']]# 获取每行数据的月份month_for_data = [j.split('/')[1] for j in get_data['Date']]aqi_data['Month'] = month_for_data# 求每个月AQI平均值month_AQI = aqi_data.groupby(['Month'])['AQI'].mean().reset_index()# 获取每个城市月均AQI的数据,转化为int数据类型city_AQI_data_int = month_AQI['AQI'].astype(int).tolist()cityes_AQI.append(city_AQI_data_int)months = [str(i) + '月' for i in range(1, 13)]line = (Line(init_opts=opts.InitOpts(width="800px", height="400px")).add_xaxis(months).add_yaxis("北京", cityes_AQI[0], color='red', label_opts=opts.LabelOpts(is_show=False)).add_yaxis("上海", cityes_AQI[1], color='purple', label_opts=opts.LabelOpts(is_show=False)).add_yaxis("广州", cityes_AQI[2], color='blue', label_opts=opts.LabelOpts(is_show=False)).add_yaxis("深圳", cityes_AQI[3], color='orange', label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="2018年北上广深AQI全年走势图", pos_left='center', pos_top='0'),legend_opts=opts.LegendOpts(orient="horizontal", pos_top="8%"),)
)line.render('./2018年北上广深AQI全年走势图.html')  # 生成HTML文件,保存在当前目录下

结果如下:

10.2018 年北上广深PM2.5全年走势图

代码如下:

import numpy as np
import pandas as pd
from pyecharts.charts import Line
from pyecharts import options as optscitys = ['beijing', 'shanghai', 'guangzhou', 'shenzhen']
cityes_AQI = []# 遍历四个城市的数据
for city in citys:filename = city + '_AQI' + '_2018.csv'aqi_data = pd.read_csv(filename)# 提取日期和PM2.5指数两列内容get_data = aqi_data[['Date', 'PM']]# 获取每行数据的月份month_for_data = [j.split('/')[1] for j in get_data['Date']]aqi_data['Month'] = month_for_data# 求每个月PM2.5平均值month_AQI = aqi_data.groupby(['Month'])['PM'].mean().reset_index()# 获取每个城市月均PM2.5的数据,转化为int数据类型city_AQI_data_int = month_AQI['PM'].astype(int).tolist()cityes_AQI.append(city_AQI_data_int)months = [str(i) + '月' for i in range(1, 13)]line = (Line(init_opts=opts.InitOpts(width="800px", height="400px")).add_xaxis(months).add_yaxis("北京", cityes_AQI[0], color='red', label_opts=opts.LabelOpts(is_show=False)).add_yaxis("上海", cityes_AQI[1], color='purple', label_opts=opts.LabelOpts(is_show=False)).add_yaxis("广州", cityes_AQI[2], color='blue', label_opts=opts.LabelOpts(is_show=False)).add_yaxis("深圳", cityes_AQI[3], color='orange', label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="2018年北上广深PM2.5全年走势图", pos_left='center', pos_top='0'),legend_opts=opts.LegendOpts(orient="horizontal", pos_top="8%"),)
)line.render('./2018年北上广深PM2.5全年走势图.html')  # 生成HTML文件,保存在当前目录下

结果如下:

11.2018 年北上广深全年空气质量情况

代码如下:

citys = ['beijing', 'shanghai', 'guangzhou', 'shenzhen']
v = []
attrs = []
for i in range(4):filename =  citys[i] + '_AQI' + '_2018.csv'df = pd.read_csv(filename)# 根据 Quality_grade 分组Quality_grade_message = df.groupby(['Quality_grade'])# 每组的频数Quality_grade_com = Quality_grade_message['Quality_grade'].agg(['count'])Quality_grade_com.reset_index(inplace=True)Quality_grade_com_last = Quality_grade_com.sort_values('count', ascending=False)# 取 Quality_grade 的值Quality_grade_array = Quality_grade_com_last['Quality_grade'].values.tolist()attrs.append(Quality_grade_array)Quality_grade_count = Quality_grade_com_last['count'].values.tolist()v.append(Quality_grade_count)# 创建饼图并设置属性
pie1 = (Pie().add("北京", [list(z) for z in zip(attrs[0], v[0])], radius=["20%", "40%"], center=["30%", "27%"],).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%")).set_global_opts(title_opts=opts.TitleOpts(title="北京", pos_left='27%', pos_top='25%'),legend_opts=opts.LegendOpts(orient="vertical", pos_right="5%", pos_top="35%"))
)pie2 = (Pie().add("上海", [list(z) for z in zip(attrs[1], v[1])], radius=["20%", "40%"], center=["70%", "27%"],).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%")).set_global_opts(title_opts=opts.TitleOpts(title="上海", pos_left='67%', pos_top='25%'),legend_opts=opts.LegendOpts(is_show=False))
)pie3 = (Pie().add("广州", [list(z) for z in zip(attrs[2], v[2])], radius=["20%", "40%"], center=["30%", "77%"],).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%")).set_global_opts(title_opts=opts.TitleOpts(title="广州", pos_left='27%', pos_top='75%'),legend_opts=opts.LegendOpts(is_show=False))
)pie4 = (Pie().add("深圳", [list(z) for z in zip(attrs[3], v[3])], radius=["20%", "40%"], center=["70%", "77%"],).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%")).set_global_opts(title_opts=opts.TitleOpts(title="深圳", pos_left='67%', pos_top='75%'),legend_opts=opts.LegendOpts(is_show=False))
)# 创建 Grid 并添加饼图
grid = (Grid().add(pie1, grid_opts=opts.GridOpts(pos_left="5%", pos_right="50%", pos_top="10%")).add(pie2, grid_opts=opts.GridOpts(pos_left="55%", pos_right="5%", pos_top="10%")).add(pie3, grid_opts=opts.GridOpts(pos_left="5%", pos_right="50%", pos_top="50%")).add(pie4, grid_opts=opts.GridOpts(pos_left="55%", pos_right="5%", pos_top="50%"))
)grid.render('./2018年北上广深全年空气质量情况.html')

结果如下:

相关文章:

基于Python的北京天气数据可视化分析

项目用到库 import numpy as np import pandas as pd import datetime from pyecharts.charts import Line from pyecharts.charts import Boxplot from pyecharts.charts import Pie,Grid from pyecharts import options as opts from pyecharts.charts import Calendar 1.2…...

Linux编译器-gcc或g++的使用

一.安装gcc/g 在linux中是不会自带gcc/g的,我们需要编译程序就自己需要安装gcc/g。 很简单我们使用简单的命令安装gcc:sudo yum install -y gcc。 g安装:sudo yum install -y gcc-c。 我们知道Windows上区分文件,都是使用文件…...

一条sql的执行流程

文章地址 https://blog.csdn.net/qq_43618881/article/details/118657040 连接器 请求先走到连接器,与客户端建立连接、获取权限、维持和管理连接 mysql缓存池 如果要查找的数据直接在mysql缓存池里面就直接返回数据 分析器 请求已经建立了连接,现在…...

Android音乐播放器的思路处理

** 1.android音乐播放播放列表中下一首上一首随机播放的思路 ** 实现 Android 音乐播放器的播放列表中的下一首、上一首和随机播放功能涉及到对音乐列表的管理以及对播放顺序的控制。以下是实现这些功能的思路: 下一首和上一首功能: 维护一个音乐列表…...

算法课程笔记——可撤销并查集

算法课程笔记——可撤销并查集 Gv...

【排序算法】快速排序

一、定义: 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法(也叫Hoare排序),是一种基于分治的排序方。其基本原理是将待排序的数组通过一趟排序分成两个独立的部分,其中一部分的所有数据比另一部分的所有数…...

OS复习笔记ch7-2

页式管理 学过计组的同学都了解一点页式管理,就是将内存划分成较小的、大小固定的、等大的块。现在OS引入了进程的概念,那么为了匹配内存的分块,同样把进程也划分成同样大小的块。 这里区分两个概念 The chunks of a process are called p…...

4.通用编程概念

目录 一、变量与常量1.1 变量1.2 常量 二、遮蔽三、数据类型3.1 标量类型1. 整型2. 浮点型3. 布尔类型4.字符类型 3.2 复合类型1. 元组2. 数组 四、函数五、语句和表达式六、函数的返回值 一、变量与常量 1.1 变量 在Rust中默认的变量是不可变的,如果修改其值会导致…...

iBeacon赋能AR导航:室内定位技术的原理与优势

室内定位导航对于大型商场、机场、医院等复杂室内环境至关重要,它帮助人们快速找到目的地,提高空间利用率。AR技术通过将虚拟信息叠加在现实世界,提供直观导航指引,正在成为室内导航的新趋势,增强用户互动体验&#xf…...

【sklearn】【逻辑回归1】

学习笔记来自: 所用的库和版本大家参考: Python 3.7.1Scikit-learn 0.20.1 Numpy 1.15.4, Pandas 0.23.4, Matplotlib 3.0.2, SciPy 1.1.0 1 概述 1.1 名为“回归”的分类器 在过去的四周中,我们接触了不少带“回归”二字的算法&#xf…...

java(kotlin)和 python 通过DoubleCloud的kafka进行线程间通信

进入 DoubleCloud https://www.double.cloud 创建一个kafka 1 选择语言 2 运行curl 的url命令启动一个topic 3 生成对应语言的token 4 复制3中的配置文件到本地,命名为client.properties 5 复制客户端代码 对python和java客户端代码进行了重写,java改成…...

vivado DIAGRAM、HW_AXI

图表 描述 块设计(.bd)是在IP中创建的互连IP核的复杂系统 Vivado设计套件的集成商。Vivado IP集成器可让您创建复杂的 通过实例化和互连Vivado IP目录中的IP进行系统设计。一块 设计是一种分层设计,可以写入磁盘上的文件(.bd&…...

学习分享-为什么把后台的用户验证和认证逻辑放到网关

将后台的用户验证和认证逻辑放到网关(API Gateway)中是一种常见的设计模式,这种做法在微服务架构和现代应用中有许多优势和理由: 1. 集中管理认证和授权 统一的安全策略 在一个包含多个微服务的系统中,如果每个服务…...

27 ssh+scp+nfs+yum进阶

ssh远程管理 ssh是一种安全通道协议,用来实现字符界面的远程登录。远程复制,远程文本传输。 ssh对通信双方的数据进行了加密。 用户名和密码登录 密钥对认证方式(可以实现免密登录) ssh 22 网络层 传输层 数据传输的过程中是…...

LabVIEW液压伺服压力机控制系统与控制频率选择

液压伺服压力机的控制频率是一个重要的参数,它直接影响系统的响应速度、稳定性和控制精度。具体选择的控制频率取决于多种因素,包括系统的动态特性、控制目标、硬件性能以及应用场景。以下是一些常见的指导原则和考量因素: 常见的控制频率范…...

阿里云(域名解析) certbot 证书配置

1、安装 certbot ubuntu 系统: sudo apt install certbot 2、申请certbot 域名证书,如申请二级域名aa.example.com 的ssl证书,同时需要让 bb.aa.example.com 也可以使用此证书 1、命令:sudo certbot certonly -d “域名” -d “…...

Web LLM 攻击技术

概述 在ChatGPT问世以来,我也尝试挖掘过ChatGPT的漏洞,不过仅仅发现过一些小问题:无法显示xml的bug和错误信息泄露,虽然也挖到过一些开源LLM的漏洞,比如前段时间发现的Jan的漏洞,但是不得不说传统漏洞越来…...

Java等待异步线程池跑完再执行指定方法的三种方式(condition、CountDownLatch、CyclicBarrier)

Java等待异步线程池跑完再执行指定方法的三种方式(condition、CountDownLatch、CyclicBarrier) Async如何使用 使用Async标注在方法上,可以使该方法异步的调用执行。而所有异步方法的实际执行是交给TaskExecutor的。 1.启动类添加EnableAsync注解 2. 方法上添加A…...

秒杀优化+秒杀安全

1.Redis预减库存 1.OrderServiceImpl.java 问题分析 2.具体实现 SeckillController.java 1.实现InitializingBean接口的afterPropertiesSet方法,在bean初始化之后将库存信息加载到Redis /*** 系统初始化,将秒杀商品库存加载到redis中** throws Excepti…...

48、Flink 的 Data Source API 详解

a)概述 本节将描述 FLIP-27 中引入的新 Source API 的主要接口。 b)Source Source API 是一个工厂模式的接口,用于创建以下组件。 Split EnumeratorSource ReaderSplit SerializerEnumerator Checkpoint Serializer 此外,Sou…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理&#xff1a…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...