前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >两种简单ERA5绘制等值线与填色图的方式

两种简单ERA5绘制等值线与填色图的方式

作者头像
用户11172986
发布2024-06-20 18:06:49
560
发布2024-06-20 18:06:49
举报
文章被收录于专栏:气python风雨气python风雨

前言

当要展示大气要素的空间分布和变化规律时,绘制ERA5数据的等值线和填色图就变得尤为重要啦!这两种方法简单易行,让我们来看看它们吧。

首先,我们有MetPy库。这个家伙是专为大气科学数据分析和可视化而生的Python库,提供了丰富的绘图功能和气象学计算工具。用它来绘制等值线和填色图,简直就是小菜一碟!

其次,咱们还有meteva库。这货是国家气象中心预报技术研发室检验科负责研发的,专门用来快速高效地检验气象产品。它能够帮助我们制作气象产品,促进跨流程跨部门的检验信息共享,为改进预报质量提供技术支持。

无论是MetPy还是meteva,都能让我们轻松愉快地绘制出漂亮的等值线和填色图,让那些枯燥的数据变得生动起来!

方法一:metpy库绘制

导入库与读取数据

代码语言:javascript
复制
代码语言:javascript
复制
from metpy.plots import ContourPlot, ImagePlot, MapPanel, PanelContainer
from metpy.units import units
import xarray as xr
nc = xr.open_dataset('/home/mw/input/era5tqzdfx9482/adaptor.mars.internal-1684907015.0619943-12842-1-c1fc11e0-4649-40a6-b30b-ef3afffd57fd.nc')
nc

数据处理:选择850hpa的位势高度

代码语言:javascript
复制
代码语言:javascript
复制
contour = ContourPlot()
contour.data = nc
contour.field = 'z'
contour.level = 850 * units.hPa
contour.linecolor = 'red'
contour.contours = 15
contour.time = pd.to_datetime(nc.time[0].values.item())
代码语言:javascript
复制

数据处理:选择850hpa的温度

代码语言:javascript
复制
代码语言:javascript
复制
img = ImagePlot()
img.data = nc
img.field = 't'
img.level = 850 * units.hPa
img.time = pd.to_datetime(nc.time[0].values.item())

绘图

代码语言:javascript
复制
代码语言:javascript
复制
panel = MapPanel()
panel.area = (110, 130, 20, 40)
panel.layers = ['coastline', 'borders', 'states', 'ocean', 'land']
panel.title = 'ERA5 test'
panel.plots = [contour, img]

pc = PanelContainer()
pc.size = (20, 12)
pc.panels = [panel]
pc.show()
代码语言:javascript
复制

方法二:meteva库绘制

导入库

代码语言:javascript
复制
代码语言:javascript
复制
#导入必要包
import meteva.base as meb
import numpy as np
import matplotlib.pyplot as plt
from meteva.base.tool.plot_tools import add_china_map_2basemap
plt.rcParams['font.sans-serif'] = ['Source Han Sans CN']  
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
代码语言:javascript
复制

读取数据与数据处理

代码语言:javascript
复制
代码语言:javascript
复制
grid0 = meb.grid([110,130,0.25],[20,40,0.25])  #设置范围应小于或等于era5数据的原有范围
t = meb.io.read_griddata_from_nc('/home/mw/input/era5tqzdfx9482/adaptor.mars.internal-1684907015.0619943-12842-1-c1fc11e0-4649-40a6-b30b-ef3afffd57fd.nc',
 grid = grid0,value_name="t")  #读取网格数据,用于测试
z = meb.io.read_griddata_from_nc('/home/mw/input/era5tqzdfx9482/adaptor.mars.internal-1684907015.0619943-12842-1-c1fc11e0-4649-40a6-b30b-ef3afffd57fd.nc',
 grid = grid0,value_name="z")
代码语言:javascript
复制

绘图部分

代码语言:javascript
复制
代码语言:javascript
复制
map_extend = [110,130,20,40]
axs = meb.creat_axs(1,map_extend, ncol=1, sup_title="era5 test", sup_fontsize=12,width=10,height=10)

image = meb.add_contour(axs[0],z.sel(level=850,time=z.time[0])/98,clevs = np.arange(120,180,2))
image = meb.add_contourf(axs[0],t.sel(level=850,time=z.time[0]),clevs = np.arange(280,320,4))

你喜欢哪一种绘制方法呢

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气python风雨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 方法一:metpy库绘制
    • 导入库与读取数据
      • 数据处理:选择850hpa的位势高度
        • 数据处理:选择850hpa的温度
          • 绘图
          • 方法二:meteva库绘制
            • 导入库
              • 读取数据与数据处理
                • 绘图部分
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档