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

【气象常用】剖面图

效果图:

主要步骤:

1. 数据准备:我用的era5的散度数据(大家替换为自己的就好啦,era5数据下载方法可以看这里【数据下载】ERA5 各高度层月平均数据下载_era5月平均数据-CSDN博客

2. 数据处理:

3. 图像绘制:

详细代码:着急的直接拖到最后有完整代码

步骤一:导入库包及图片存储路径并设置中文字体为宋体,西文为新罗马(没有的库包要先下好奥,字体设置部分没有要求的话可以直接删除)

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import xarray as xr# 设置西文字体为新罗马字体,中文为宋体,字号为12
from matplotlib import rcParams
config = {"font.family": 'serif',"font.size": 12,"mathtext.fontset": 'stix',"font.serif": ['SimSun'],}
rcParams.update(config)
rcParams['axes.unicode_minus']=Falsedatapath = r'H:/00.csdn/01data/'
figpath = r'H:/00.csdn/02fig/'
shppath = r'H:/00.csdn/04shp/cn_shp/Province_9/Province_9.shp'

步骤二:读入数据

# 读入数据
f1 = xr.open_dataset(datapath + '202306_div.nc')
# print(f1)
div = f1['d'][0, 14:, :, :].values * 10**6
time = f1['time']
lons = f1['longitude'].values  
lats = f1['latitude'].values  
lon, lat = np.meshgrid(lons, lats)
lev = f1['level'][14:].values  
log_lev = np.log10(lev)  
print(log_lev)
print(lev)

步骤三:计算纬圈平均

##########################################################
# 数据处理
div_mean = np.mean(div, 1)

步骤四:绘制图像(剖面图+指定位置打点)

##########################################################
# 绘制图像  
fig = plt.figure(figsize=(15, 6))  
level = np.linspace(-4, 4, 9)def plot_cont(location, data, text, textposition):  ax = fig.add_axes(location)  cs = ax.contourf(lons, log_lev, data, levels=level, cmap='RdBu_r', extend='both') ax.plot(110, 2.9, 'r*', markersize=10)  # 'r*'表示红色星号,markersize控制大小# 翻转纵坐标(即让高度从下到上递增)  ax.invert_yaxis()  x = ['%i°E' %lon for lon in lons[::40]]  y = [200, 300, 500, 700, 850, 1000]ax.set(xticks=lons[::40], xticklabels=x,yticks=np.log10(y), yticklabels=y, ylabel='hPa')# 设置标题和位置  title = ax.set_title(text, fontsize=12)  title.set_position(textposition)  # 调整位置  return cs  # 调用上面的函数  
c1 = plot_cont([0.1, 0.1, 0.3, 0.25], div_mean, '(a) ERA5', [0.05, 1.05])  
c1 = plot_cont([0.45, 0.1, 0.3, 0.25], div_mean, '(b) ERA5', [0.05, 1.05])  
# 色标设置  
rect = [0.12, 0.015, 0.6, 0.02]  
cbar_ax = fig.add_axes(rect)  cb = fig.colorbar(c1, drawedges=True,  cax=cbar_ax, orientation='horizontal')  
cb.set_label('mm', fontsize=12)  
cb.ax.tick_params(length=0)  

步骤五:保存图像

# 保存图像
plt.savefig(figpath+'215 剖面图.png', dpi=600, bbox_inches='tight')
plt.show()  

完整代码在这里:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import xarray as xr# 设置西文字体为新罗马字体,中文为宋体,字号为12
from matplotlib import rcParams
config = {"font.family": 'serif',"font.size": 12,"mathtext.fontset": 'stix',"font.serif": ['SimSun'],}
rcParams.update(config)
rcParams['axes.unicode_minus']=Falsedatapath = r'H:/00.csdn/01data/'
figpath = r'H:/00.csdn/02fig/'
shppath = r'H:/00.csdn/04shp/cn_shp/Province_9/Province_9.shp'
##########################################################
# 读入数据
f1 = xr.open_dataset(datapath + '202306_div.nc')
# print(f1)
div = f1['d'][0, 14:, :, :].values * 10**6
time = f1['time']
lons = f1['longitude'].values  
lats = f1['latitude'].values  
lon, lat = np.meshgrid(lons, lats)
lev = f1['level'][14:].values  
log_lev = np.log10(lev)  
print(log_lev)
print(lev)
##########################################################
# 数据处理
div_mean = np.mean(div, 1)
##########################################################
# 绘制图像  
fig = plt.figure(figsize=(15, 6))  
level = np.linspace(-4, 4, 9)def plot_cont(location, data, text, textposition):  ax = fig.add_axes(location)  cs = ax.contourf(lons, log_lev, data, levels=level, cmap='RdBu_r', extend='both')  ax.plot(110, 2.9, 'r*', markersize=10)  # 'r*'表示红色星号,markersize控制大小# 翻转纵坐标(即让高度从下到上递增)  ax.invert_yaxis()  x = ['%i°E' %lon for lon in lons[::40]]  y = [200, 300, 500, 700, 850, 1000]ax.set(xticks=lons[::40], xticklabels=x,yticks=np.log10(y), yticklabels=y, ylabel='hPa')# 设置标题和位置  title = ax.set_title(text, fontsize=12)  title.set_position(textposition)  # 调整位置  return cs  # 调用上面的函数  
c1 = plot_cont([0.1, 0.1, 0.3, 0.25], div_mean, '(a) ERA5', [0.05, 1.05])  
c1 = plot_cont([0.45, 0.1, 0.3, 0.25], div_mean, '(b) ERA5', [0.05, 1.05])  # 色标设置  
rect = [0.12, 0.015, 0.6, 0.02]  
cbar_ax = fig.add_axes(rect)  cb = fig.colorbar(c1, drawedges=True,  cax=cbar_ax, orientation='horizontal')  
cb.set_label('mm', fontsize=12)  
cb.ax.tick_params(length=0)  ##########################################################
# 保存图像
plt.savefig(figpath+'215 剖面图.png', dpi=600, bbox_inches='tight')
plt.show()  

相关文章:

【气象常用】剖面图

效果图: 主要步骤: 1. 数据准备:我用的era5的散度数据(大家替换为自己的就好啦,era5数据下载方法可以看这里【数据下载】ERA5 各高度层月平均数据下载_era5月平均数据-CSDN博客) 2. 数据处理&#xff1a…...

LabVIEW高低温试验箱控制系统

要实现LabVIEW高低温试验箱控制系统,需要进行硬件配置、软件设计和系统集成,确保LabVIEW能够有效地监控和控制试验箱的温度。以下是详细说明: 硬件配置 选择合适的试验箱: 确定高低温试验箱的型号和品牌。 确认试验箱是否支持外…...

Flutter 中的 SliverFillViewport 小部件:全面指南

Flutter 中的 SliverFillViewport 小部件:全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架,它允许开发者使用 Dart 语言来构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的丰富组件库中,SliverFillViewport 是一个用于 Custo…...

明日周刊-第12期

以前小时候最期待六一儿童节了,父母总会给你满足一个愿望,也许是一件礼物也许是一次陪伴。然而这个世界上其实还有很多儿童过不上儿童节,比如某些地区的小孩子,他们更担心的是能不能见到明天的太阳。 文章目录 一周热点航天探索火…...

算法之美阅读笔记

这里写自定义目录标题 序04 缓存 -- 忘了它吧 序 在图书馆闲逛时,一本封面为绿色的清新的书引起了我的兴趣,书名是算法之美。我心里不禁嘀咕,大家好喜欢使用某某之美作为书名,比如:数学之美、架构之美。美丽美好的事物…...

新手学习STM32还是ESP32

对于新手来说,选择学习STM32还是ESP32取决于个人的学习目标和背景。以下是针对这两种微控制器的详细分析,以便您做出更明智的选择: STM32 1. 处理器架构与性能 STM32采用单核或多核处理器架构,基于ARM Cortex-M0,M0…...

关于vlookup的第一个参数的个人理解

VLOOKUP(查阅值,包含查阅值和返回值的查找区域,查找区域中返回值的列号,精确查找或近似查找) 我个人理解,第一个参数应该叫线索值,因为我们要通过它去找与其对应的(也就是与其同行的…...

vector实现后半部分

一.迭代器失效 1.定义 指原迭代器在扩容/缩容/修改后指向无效元素或无效地址处 erase的迭代器失效 2.原因: 1.有的编译器实现erase会缩容拷贝 2.删除最后一个后,其指向无效元素 VS中不允许再次使用erase完的迭代器,为了让编写的代码移植…...

Maven配置

Maven – Download Apache Maven https://maven.apache.org/install.html 得下载有 bin的...

python 第一天

循环打印 while循环 languages ["Regional Assembly Language","Autocode","FORTRAN","IPL (LISP的先驱)","FLOW-MATIC (COBOL的先驱)","COMTRAN (COBOL的先驱)","LISP","ALGOL 58","F…...

Day03 左侧菜单数据绑定

一.左侧菜单数据绑定 1.首先,进行项目结构塔建。按照Prism 框架约定,要使用自动查找绑定功能。即View (视图)中自动查找并绑定到对应的ViewModel(视图模型,处理视图业务逻辑)。就需要在项目中按…...

JavaScript笔记三-JavaScript常用对象

1、数字对象(Number) 1.1 、属性 属性描述Number.MAX_VALUEJavaScript 中所能表示的最大值Number.MIN_VALUEJavaScript 中所能表示的最小值Number.NaN非数字Number.NEGATIVE_INFINITY负无穷,在溢出时返回Number.POSITIVE_INFINITY正无穷&am…...

最新的CleanMyMac X4.15.4中文破解版新功能介绍及CleanMyMac 安装激活指南

知名的Mac系统清理软件CleanMyMac发布了最新的CleanMyMac X4.15.4,更换了矩形图标,更好的融合和兼容macOS Snoma系统。新版CleanMyMac 支持Intel芯片和苹果M1/M2芯片的Mac。 优化 Mac 电脑,用 CleanMyMac X4.15.4中文版 就够了!强…...

密文域可逆信息隐藏安全性研究-从图像到视频

前言 随着云存储、云计算等新兴技术的兴起,海量的隐私信息被广泛地上传、存储到服务器上。为保证用户的隐私性,必须对用户的数据进行加密,然后再将其上传到服务器上。因此,密文域的可逆信息隐藏(reversible data hiding in encry…...

使用Python进行图像锐化的4个基础操作

想要让你的照片从模糊变锐利,就像魔法师轻轻一挥魔杖?今天我们就来学习如何用Python施加这神奇的“锐化滤镜”!🎉 首先,你需要一位得力助手——Pillow库,它能让我们轻松处理图像。如果你还没安装&#xff…...

图解 Python 编程(9) | 模块和包

🌞欢迎来到Python的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 📆首发时间:🌹2024年6月2日&…...

德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第五周) - Transformer

Transformer 1. 注意力机制 在语言建模中,注意力(attention)是一个关键机制,用于在给定上下文中访问相关信息以进行预测。注意力机制允许模型根据输入上下文中的重要信息来加权关注不同的部分,并根据其重要性来决定对不同部分的关注程度。 …...

识别同一用户

识别来自同一终端的访问技术 使用HTTP访问Web服务器时,会反复地执行页面的迁移和图像的读取等通信处理。而不同的通信都是使用不同的方式进行处理。因此服务器端就不需要对每个终端的状态进行单独的管理,可以降低服务器的负载。 另外,…...

Chrome DevTools攻略

Chrome DevTools攻略 Chrome DevTools 是 Chrome 浏览器内置的一组开发者工具,用于帮助开发者调试和优化网页和应用程序。本文将详细介绍如何使用 Chrome DevTools 进行高效的开发和调试。 目录 介绍 什么是 Chrome DevTools? DevTools 的主要功能和用…...

用Python获取Windows本机安装的所有应用程序的实现与分析

一个项目中需要获取本机安装的所有应用程序列表,花了一点时间研究了一下,分享出来。 主要通过访问注册表和桌面快捷方式来完成这一任务,因为注册表中获取到的应用程序列表不完全,因此通过桌面快捷方式进行补充。 导入所需模块 im…...

C++定时器避坑指南:线程安全、资源泄漏与时间轮参数怎么调?一次讲清楚

C定时器避坑指南:线程安全、资源泄漏与时间轮参数调优实战 在分布式系统和高并发场景中,定时器如同系统的心跳机制,其稳定性直接决定服务可靠性。去年某电商平台大促期间,由于定时任务堆积导致的雪崩效应,造成近千万损…...

MCP服务器部署模板:容器化与CI/CD自动化实践指南

1. 项目概述:一个为MCP服务器量身定制的部署蓝图如果你正在开发或维护一个基于模型上下文协议(Model Context Protocol, MCP)的服务器,并且对如何将其优雅、可靠地部署到生产环境感到头疼,那么你很可能已经…...

从Awesome List到个人知识库:开发者如何高效筛选与组织技术资源

1. 项目概述:一份面向开发者的“Awesome List”清单 如果你在GitHub上混迹过一段时间,尤其是热衷于探索前沿技术、寻找优质学习资源或开源项目,那么你大概率见过或者使用过一种特殊的仓库—— Awesome List 。简单来说,这是一个…...

3D打印LED发光史莱姆:零焊接电子制作与创意材料科学实践

1. 项目概述:当电子制作遇上创意手工几年前,我在一个社区创客空间带孩子们做活动,发现一个挺有意思的现象:一讲到电路、LED、电阻,不少孩子眼神就开始飘忽;但一旦拿出会发光的、可以随意揉捏的“史莱姆”泥…...

CFETR重载机械臂精确运动控制验证【附仿真】

✨ 长期致力于中国聚变工程实验堆、遥操作、多功能重载机械臂、路径规划、精确控制、数据融合控制研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)刚柔…...

GetQzonehistory终极指南:三步快速备份QQ空间全部历史说说

GetQzonehistory终极指南:三步快速备份QQ空间全部历史说说 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字记忆时代,QQ空间承载了无数用户的青春回忆和成长…...

Veil-Evasion核心模块深度解析:从控制器到Payload生成

Veil-Evasion核心模块深度解析:从控制器到Payload生成 【免费下载链接】Veil-Evasion Veil Evasion is no longer supported, use Veil 3.0! 项目地址: https://gitcode.com/gh_mirrors/ve/Veil-Evasion Veil-Evasion是一款专业的免杀payload生成工具&#x…...

C++ 如何在VS中“强制”链接?

如何在VS中“强制”链接? 打开你的game_mobile项目,按下图设置。 方法一:强制链接(最直接) 这是彻底忽略LNK1169及其引发的所有LNK2005错误,强制生成可执行文件的方法。 打开项目的“属性页”。导航到“配置…...

ElevenLabs老年语音情感衰减难题破解(附可复用的Prosody增强JSON Schema与实测MOS提升2.1分)

更多请点击: https://intelliparadigm.com 第一章:ElevenLabs老年男性语音情感衰减现象的本质剖析 ElevenLabs 的老年男性语音模型(如 “Antoni” 或 “Josh”)在高语速、长句或情绪密集场景下,常出现语调扁平化、微停…...

如何用G-Helper轻松实现华硕笔记本CPU降压:实用调优指南

如何用G-Helper轻松实现华硕笔记本CPU降压:实用调优指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, …...