wrf-python库插值到指定离地高度层并绘图
Python 指定 绘图 插值 WRF
2023-06-13 09:15:05 时间
任务
从wrfout文件中提取o3变量,并将其数据结果插值到想要的离地高度层上(示例中是1km、3km、5km、10km),进行可视化。下面提供示例代码,其中用虚线----框住的部分是插值的关键代码。
代码
import numpy as np
import xarray as xr
from netCDF4 import Dataset
from wrf import to_np, getvar, get_cartopy, cartopy_xlim,cartopy_ylim, latlon_coords,interpz3d,destagger
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.cm import get_cmap
from matplotlib.colors import ListedColormap
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.mpl.ticker import (LongitudeFormatter, LatitudeFormatter, LatitudeLocator, LongitudeLocator)
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
from matplotlib.axes import Axes
from cartopy.mpl.geoaxes import GeoAxes
import matplotlib.patches as mpatches
import matplotlib.transforms as mtransforms
from matplotlib import ticker as mticker
import cmaps
def mapart(ax):
ax.coastlines('50m', color='k', lw=0.3)
ax.set_xlim(cartopy_xlim(o3))
ax.set_ylim(cartopy_ylim(o3))
ax.set_yticks([])
title='O3 concentrations above surface'
rowlabels=[ '10km','5km', '3km','1km']
#------------------------------------------------------
ncfile = Dataset('wrfout_d01_2018-08-02_00:00:00')
ph=getvar(ncfile, "PH",timeidx=0)[:,10:140,10:140]
phb=getvar(ncfile, "PHB",timeidx=0)[:,10:140,10:140]
hgt=getvar(ncfile, "HGT",timeidx=0)[10:140,10:140]
o3 = getvar(ncfile, "o3",timeidx=0)[:,10:140,10:140]
P=ph+phb
P = destagger(P,0,meta=True)
gmp=P/9.81-hgt
z_list=[10000.,5000.,3000.,1000.] #unit:m
o3_z = interpz3d(o3,gmp,np.array(z_list))
#--------------------------------------------------------
lats, lons = latlon_coords(o3)
cart_proj = get_cartopy(o3)
fig,ax=plt.subplots(4,1,figsize=(6,6),dpi=300,subplot_kw={'projection': cart_proj})
for i in range(len(z_list)):
mapart(ax[i])
ac0=ax[i].contourf(to_np(lons), to_np(lats), 1000.0*to_np(o3_z[i]), levels=np.arange(12,54,3),
transform=ccrs.PlateCarree(),
cmap=cmaps.BlGrYeOrReVi200,extend='both')
ax[i].set_ylabel(rowlabels[i],size=10)
plt.suptitle(title,fontsize='small',fontweight='heavy')
plt.savefig('test.png')
plt.show()
结果
相关文章
- Python 爬虫 NO.4 HTTP 响应状态码
- Python 下载的 11 种姿势,一种比一种高级!
- python中矩阵的转置怎么写_Python 矩阵转置的几种方法小结
- python实现矩阵的转置_Python实现矩阵转置的方法分析
- python编程是啥-Python编程「建议收藏」
- python海龟作图红绿灯_海龟作图—用Python绘图
- Python 实现异步调用函数
- Python编程基础
- python海龟绘图画圆_Python启蒙之海龟作图「建议收藏」
- python 多线程测试_【Python】多线程网站死链检测工具
- Python保留指定位数的小数
- 【说站】Python解释器有哪几种
- python分析人口出生率代码_国家统计局居然也能用的上Python?人口数据Python脚本了解一下?…[通俗易懂]
- 【Python模块2】- 模块搜索顺序、内置属性、开发原则
- python语言关键字是_Python 关键字
- Python 生成随机数_python建立随机数列表
- pandas读取excel某一行_python读取csv数据指定行列
- 初识Python
- 使用Python批量筛选上千个Excel文件中的某一行数据并另存为新Excel文件(下篇)
- 【测试开发】python系列教程:Python注释和解释器
- python编写的一个通过多线程扫描端口的代码详解编程语言
- Python开发系列课程(5) – 玩转PyCharm(上)详解编程语言
- python模块之psutil详解编程语言
- Linux下安装Python的指南(linux下安装python)
- 在Linux上搭建Python开发环境(linux搭建python环境)
- python之shutil模块详解编程语言
- 使用 Cython 为 Python 编写更快的 C 扩展
- 使用 Plotly 来简化 Python 中的数据可视化
- Python中eval带来的潜在风险
- python访问sqlserver示例
- python实现数通设备tftp备份配置文件示例
- 初学Python实用技巧两则