当前位置: 首页 > 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…...

springboot基础及上传组件封装

简介 本文主要以文件上传为demo,介绍了一些 springboot web 开发的入门的技术栈。 对应刚接触 springboot 的可以参考下。 主要包括文件md5比对、生成图片缩略图、数据库迁移、文件记录持久化、请求全局异常处理等功能。 准备工作 在 idea 中创建项目&#xff…...

WHAT - package.json 解释

目录 一、前言二、介绍2.1 package.json 文件示例2.2 关键字段2.3 常用命令2.4 自定义脚本 三、element-plus 完整示例3.1 main 和 module1. main 字段2. module 字段3. 综合示例 3.2 types1. 示例2. TypeScript 类型定义文件的作用3. 类型定义文件示例4. 发布带有类型定义的包…...

Python知识点14---被规定的资源

提前说一点:如果你是专注于Python开发,那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了,而如果你和作者一样只是操作其他技术的Python API那就足够了。 在Python中被规定的东西不止有常识中的那些关键字、构造器等编程语言…...

文献阅读:GCNG:用于从空间转录组数据推断基因相互作用的图卷积网络

文献介绍 「文献题目」 GCNG: graph convolutional networks for inferring gene interaction from spatial transcriptomics data 「研究团队」 Ziv Bar-Joseph(美国卡内基梅隆大学) 「发表时间」 2020-12-10 「发表期刊」 Genome Biology 「影响因子…...

Mybatis第一讲——你会Mybatis吗?

文章目录 什么是MybatisMybatis的作用是什么 Mybatis 怎么使用注解的方式注解的多种使用Options注解ResultType注解 XML的方式update标签 #{} 和 ${}符号的区别#{}占位${}占位 ${}占位的危险性(SQL注入)数据库连接池 什么是Mybatis 首先什么是Mybatis呢?Mybatis是一…...

【HarmonyOS】List组件多层对象嵌套ForEach渲染更新的处理

【HarmonyOS】List组件多层对象嵌套ForEach渲染更新的处理 问题背景: 在鸿蒙中UI更新渲染的机制,与传统的Android IOS应用开发相比。开发会简单许多,开发效率提升显著。 一般传统应用开发的流程处理分为三步:1.画UI,…...

PostgreSQL基础(六):PostgreSQL基本操作(二)

文章目录 PostgreSQL基本操作(二) 一、字符串类型 二、日期类型 三、...

【前端部署——vercel】部署next.js使用了prisma的项目

部署流程参考 https://blog.csdn.net/qq_51116518/article/details/137042682 问题 PrismaClientInitializationError: Prisma has detected that this project was built on Vercel, which caches dependencies. This leads to an outdated Prisma Client because Prisma’s …...

Vue插槽与作用域插槽

title: Vue插槽与作用域插槽 date: 2024/6/1 下午9:07:52 updated: 2024/6/1 下午9:07:52 categories: 前端开发 tags:VueSlotScopeSlot组件通信Vue2/3插槽作用域API动态插槽插槽优化 第1章:插槽的概念与原理 插槽的定义 在Vue.js中,插槽(…...

类和对象(一)(C++)

类和对象: 类的引入: C语言结构体中只能定义变量,在C中,结构体内不仅可以定义变量,也可以定义函数。比如: 之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量&#…...