【气象常用】剖面图

效果图:

主要步骤:

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()  

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

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

相关文章

windows10系统64位安装delphiXE11.2完整教程

windows10系统64位安装delphiXE11.2完整教程 https://altd.embarcadero.com/download/radstudio/11.0/radstudio_11_106491a.iso XE11.1 https://altd.embarcadero.com/download/radstudio/11.0/RADStudio_11_2_10937a.iso XE11.2 关键使用文件在以下内容:windows10…

Java Spring Boot 从必应爬取图片

获取图片主要就是通过必应图片页面控制台的元素,确认图片和标题在哪个类中(浏览器 F12) 引入依赖 这里需要引入两个依赖 jsoup 和 hutool maven依赖网站地址:Maven Repository: Search/Browse/Explore (mvnrepository.com) 挑选…

极简网络用户手册(1)

极简网络系统处理流程 模块位置:参数平台--专题分析--极简网络分析 步骤: 步骤一:创建精细化场景策略 步骤二:创建任务,主要选择策略(包括√配置和距离配置)和需要处理的小区清单(源…

srcu浅析

本文代码基于linux内核4.19.195 之前写了rcu、rcu nocb的文章,感觉还差个srcu就完整了,现在补齐一下。 SRCU(Sleepable RCU)是rcu的一个变体,顾名思义,就是在rcu的读临界区中允许睡眠,而rcu在读…

CCF-GESP 等级考试 2023年6月认证C++四级真题解析

2023年09月真题 一、单选题(每题2分,共30分) 第 1 题 高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执行代码。 A. 编辑B. 保存C. 调试D. 编译 答案:D 解析:…

FS212E 系列PD协议

PD快充协议芯片FS212EL、FS212EH可以智能的识别插入的手机类型,选择最为合适的协议应对手机快充需要。兼容多类USB Type-C协议,包括TypeC协议、TypeC PD2.0、TypeC PD3.0、TypeC PD3.2等协议。集成OPTO输出,通过电阻直驱反馈光耦。FS212E 的调…

C++函数模版和C#的泛型函数的区别

函数模板和C#的泛型函数在概念上是非常相似的&#xff0c;都是用于创建能够处理多种数据类型的通用函数。它们的主要区别点在于语法和实现细节上&#xff1a; 语法&#xff1a; C 中的函数模板使用 template <typename T> 或者 template <class T> 来声明模板&am…

新手学习STM32还是ESP32

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

PlantUML-使用文本来画时序图

介绍 PlantUML 是一个开源工具&#xff0c;用户可以使用纯文本描述来创建 UML (统一建模语言) 图形。由于它使用文本来描述图形&#xff0c;因此可以很容易地将这些描述与源代码一起存储在版本控制系统中。然后&#xff0c;PlantUML 负责将这些描述转换为图形。 资料 官方文…

k8s部署1.27.3版本,使用containerd模式

环境 操作系统&#xff1a;centos7.9 机器&#xff1a;1个master 和 1个node 节点&#xff08;云ECS&#xff09; 系统设置 # 所有机器设置hostname hostnamectl set-hostname master1 hostnamectl set-hostname node1# 所有机器增加内网ip和 master1 对应关系 vi /etc/ho…

杂牌记录仪TS视频流恢复方法

大多数的记录仪都采用了MP4/MOV文件方案&#xff0c;极少数的可能在用AVI文件&#xff0c;极极少数的在用TS文件方案。很多人可能不太解TS文件&#xff0c;这是一种古老的视频文件结构&#xff0c;下边这个案例我们来看下TS视频文件的恢复方法。 故障存储:8G存储卡/fat32文件系…

2-1RT-Thread线程管理-笔记

2-1RT-Thread线程管理-笔记 其中系统线程由内核创建&#xff0c;如main函数和空闲线程都属于系统线程&#xff0c;而用户线程是由应用程序所创建的。 对于资源较大的MCU可以适当设计较大的线程栈&#xff0c;也可以在初始化时设置一个具体的数值&#xff0c;如1K或2K字节。…

索引 ---- mysql

目录 1. 索引 1.1 概念 1.2 作用 1.3 使用场景 1.4 使用 1.4.1查看索引 1.4.2 创建索引 1.4.3 删除索引 1.5 注意事项 1.6 索引底层的数据结构 (面试经典问题) 1. 索引 1.1 概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的…

2006NOIP普及组真题 2. 开心的金明

线上OJ&#xff1a; 【06NOIP普及组】开心的金明 本题只要把 1、限定金额看成背包总容量 2、每件物品的价格 v 看成占用背包的体积 3、每件物品的价格v乘以权重w作为该物品的价值 则本题可套用标准的01背包问题模板&#xff1a; f [ j ] m a x ( f [ j ] , f [ j − v ] w …

Redis单线程

Redis是基于Reactor模式开发的网络事件处理器,这个处理器是单线程的,所 以redis是单线程的。 为什么它是单线程还那么快呢? 主要有以下几个原因: 一、纯内存操作 由于Redis是 纯内存操作,相比于磁盘来说,内存就快得多,这个是Redis快的主要 原因。 二、多路复用I/O机制(…

优先队列优化哈夫曼编码

前言 个人小记 一、代码 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define MAX_NODE 80 #define MAX_STR 50 #define MAX_HEAP 100 #define father(i) ((i)/2) #define left(i) ((i)*2) #define right(i) …

11.3 指针和函数

11.3 指针和函数 本节必须掌握的知识点&#xff1a; 指针作为函数的参数 数组作为函数的参数 指针作为函数的返回值 在C语言中&#xff0c;指针的一个重要作用就是作为函数参数使用&#xff0c;本节将介绍这一重要作用。 11.3.1 指针作为函数的参数 实验一百一十三&#xff…

电磁兼容(EMC):BUCK变换器基本原理及传导辐射分析设计

目录 1. BUCK电路拓扑及原理 2. Buck拓扑电路电磁场分析 3.总结 开关电源替代线性电源&#xff0c;解决了效率和体积问题&#xff0c;但也带来了新的EMI问题。开关电源也是产品内部的强辐射源之一&#xff0c;基于透过现象看本质&#xff0c;将复杂问题简单化&#xff0c;本…

Xilinx FPGA 管脚的默认电平配置方法 XDC约束

目录 未使用的引脚&#xff0c;XDC约束其他已使用的引脚&#xff0c;XDC约束 未使用的引脚&#xff0c;XDC约束 set_property BITSTREAM.CONFIG.UNUSEDPIN PULLDOWN [current_design] set_property BITSTREAM.CONFIG.UNUSEDPIN PULLUP [current_design] set_property BITSTREA…

T检验——单样本t检验/两独立样本t检验/配对样本t检验

T检验——单样本t检验/两独立样本t检验/配对样本t检验 1.单样本t检验1.1 适用范围 2. &#xff08; 独立样本t检验&#xff09;两独立样本t检验3.ANOVA多组样本显著性检验&#xff08;2组以上&#xff09;4. 配对样本T检验 1.单样本t检验 1.1 适用范围 单样本t检验:即已知样本…