【wrf-python】3个pcolormesh子图绘制

# _*_ coding:utf-8 _*_
#----------------------导入数据读取和处理的模块-----------------------
from netCDF4 import Dataset
from pathlib import Path
import glob
import xarray as xr
import numpy as np
import pandas as pd
from wrf import getvar, ALL_TIMES, latlon_coords, xy_to_ll, ll_to_xy, smooth2d, \
get_cartopy,cartopy_xlim,cartopy_ylim,to_np,to_xy_coords,interplevel,CoordPair,vertcross

#----------------------导入画图相关函数-------------------------------
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import matplotlib.ticker as ticker
from cartopy import mpl
import cartopy.crs as ccrs
import cartopy.feature as cfeat
import cartopy.io.shapereader as shapereader
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
from cartopy.mpl.ticker import LongitudeFormatter,LatitudeFormatter,LongitudeLocator,LatitudeLocator
from pylab import *

#-------------------- 导入颜色包---------------------------------------
import seaborn as sns
from matplotlib import cm
from matplotlib.colors import ListedColormap

#------------------- 导入插值模块----------------------------------------
from scipy.interpolate import interp1d #引入scipy中的一维插值库
from scipy.interpolate import griddata #引入scipy中的二维插值库
from scipy.interpolate import interp2d

#----------------------字体设置--------------------------------------------
plt.rcParams['font.family'] = 'Times New Roman'
plt.rcParams['font.size'] = 15


#输入路径,读取nc数据属性
path = "J:/0hsyPaper202406/4data/4-wrfout-231106/copy_merge/wrfout_wuwei1.nc"
ds=xr.open_dataset(path)
ds.dims

#nc数据coords变量名重命名。
df = ds.rename({"Time":"time"})
df.dims


dft2=df["T2"]
dft2["XTIME"].data
# dft2["XLAT"].data

t2=dft2.loc[29:,9:108,9:88]
t2["XTIME"].data

t2_spr = t2.loc[0:92]
# t2_spr["XTIME"].data
t2_sum = t2.loc[92:184]
# t2_sum["XTIME"].data
t2_aut = t2.loc[184:275]
# t2_win["XTIME"].data

t2_spr_meant = t2_spr.mean(dim="time")-273.15   #(-14.80969238, 9.49023438)
print(t2_spr_meant)
t2_sum_meant = t2_sum.mean(dim="time")-273.15   #(-3.60955811, 22.57196045)
t2_aut_meant = t2_aut.mean(dim="time")-273.15   #(-14.19775391, 6.83230591)

lats,lons=latlon_coords(t2)
# lats,lons

fig=plt.figure(figsize=(20,18))
cart_proj = ccrs.LambertConformal(central_longitude=103, standard_parallels=(30, 60))
###################################################################################################
#t2_spr_meant
###################################################################################################
t2min=-15
t2max=25
ax1=plt.subplot(1,3,1,projection=cart_proj)
#1、图题########################
ax1.set_title("Spring T2 temperature",fontsize=20)
ax1.set_title('unit: ℃',loc='right',fontsize=16)

#2、叠加区域shp#######################################
shp="F:/市.shp"
cnmap=cfeat.ShapelyFeature(shapereader.Reader(shp).geometries(), ccrs.PlateCarree(), edgecolor="black", facecolor='none')
ax1.add_feature(cnmap, linewidth=1)

#3、设置模拟区域范围与网格形式########################
levels1=np.arange(-15,15)
im1=plt.pcolormesh(to_np(lons[0]), to_np(lats[0]), to_np(t2_spr_meant),  vmin=t2min, vmax=t2max,
            cmap=get_cmap("coolwarm"),transform=ccrs.PlateCarree())

ax1.xaxis.set_major_formatter(LONGITUDE_FORMATTER)
ax1.yaxis.set_major_formatter(LATITUDE_FORMATTER)
lon_format=LongitudeFormatter()
lat_format=LatitudeFormatter()

gl1 = ax1.gridlines(draw_labels = True,  linestyle=":", crs=ccrs.PlateCarree(), linewidth=1, color="grey",
                        x_inline=False, y_inline=False)
#gl.top_labels = False #关闭上部经纬度标签
gl1.right_labels = False
gl1.top_labels = False
# gl.xlocator = mticker.FixedLocator(np.arange(70,140,10))
# gl.ylocator = mticker.FixedLocator(np.arange(10,60,10))
gl1.xlabel_style ={"size":18, "color":"black"} #修改经纬度坐标网格字体大小
gl1.ylabel_style ={"size":18, "color":"black"} #修改经纬度坐标网格字体大小
gl1.rotate_labels = False

#4、设置colorbar###########################
# cbar1=plt.colorbar(ax=ax1,shrink=0.98)

###################################################################################################
#t2_sum_meant
###################################################################################################
ax2=plt.subplot(1,3,2,projection=cart_proj)
#1、图题########################
ax2.set_title("Summer T2 temperature",fontsize=20)
ax2.set_title('unit: ℃',loc='right',fontsize=16)

#2、叠加区域shp#######################################
shp="F:/市.shp"
cnmap=cfeat.ShapelyFeature(shapereader.Reader(shp).geometries(), ccrs.PlateCarree(), edgecolor="black", facecolor='none')
ax2.add_feature(cnmap, linewidth=1)

#3、设置模拟区域范围与网格形式########################
levels2=np.arange(0,25)
im2=plt.pcolormesh(to_np(lons[0]), to_np(lats[0]), to_np(t2_sum_meant),   vmin=t2min, vmax=t2max,
            cmap=get_cmap("coolwarm"),transform=ccrs.PlateCarree())

ax2.xaxis.set_major_formatter(LONGITUDE_FORMATTER)
ax2.yaxis.set_major_formatter(LATITUDE_FORMATTER)
lon_format=LongitudeFormatter()
lat_format=LatitudeFormatter()

gl2 = ax2.gridlines(draw_labels = True,  linestyle=":", crs=ccrs.PlateCarree(), linewidth=1, color="grey",
                        x_inline=False, y_inline=False)
#gl.top_labels = False #关闭上部经纬度标签
gl2.right_labels = False
gl2.top_labels = False
# gl.xlocator = mticker.FixedLocator(np.arange(70,140,10))
# gl.ylocator = mticker.FixedLocator(np.arange(10,60,10))
gl2.xlabel_style ={"size":18, "color":"black"} #修改经纬度坐标网格字体大小
gl2.ylabel_style ={"size":18, "color":"black"} #修改经纬度坐标网格字体大小
gl2.rotate_labels = False

#4、设置colorbar###########################
# cbar2=plt.colorbar(ax=ax2,shrink=0.98)

###################################################################################################
#t2_win_meant
###################################################################################################
ax3=plt.subplot(1,3,3,projection=cart_proj)
#1、图题########################
ax3.set_title("Autumn T2 temperature",fontsize=20)
ax3.set_title('unit: ℃',loc='right',fontsize=16)

#2、叠加区域shp#######################################
shp="F:/市.shp"
cnmap=cfeat.ShapelyFeature(shapereader.Reader(shp).geometries(), ccrs.PlateCarree(), edgecolor="black", facecolor='none')
ax3.add_feature(cnmap, linewidth=1)

#3、设置模拟区域范围与网格形式########################
levels3=np.arange(-15,25)
im3=plt.pcolormesh(to_np(lons[0]), to_np(lats[0]), to_np(t2_aut_meant), vmin=t2min, vmax=t2max,
            cmap=get_cmap("coolwarm"),transform=ccrs.PlateCarree())

ax3.xaxis.set_major_formatter(LONGITUDE_FORMATTER)
ax3.yaxis.set_major_formatter(LATITUDE_FORMATTER)
lon_format=LongitudeFormatter()
lat_format=LatitudeFormatter()

gl3 = ax3.gridlines(draw_labels = True,  linestyle=":", crs=ccrs.PlateCarree(), linewidth=1, color="grey",
                        x_inline=False, y_inline=False)
#gl.top_labels = False #关闭上部经纬度标签
gl3.right_labels = False
gl3.top_labels = False
# gl.xlocator = mticker.FixedLocator(np.arange(70,140,10))
# gl.ylocator = mticker.FixedLocator(np.arange(10,60,10))
gl3.xlabel_style ={"size":18, "color":"black"} #修改经纬度坐标网格字体大小
gl3.ylabel_style ={"size":18, "color":"black"} #修改经纬度坐标网格字体大小
gl3.rotate_labels = False

#4、设置colorbar###########################
# cbar3=plt.colorbar(ax=ax3,shrink=0.98)

#####################################################################################################################
fig.subplots_adjust(right=0.9)               #前面三个子图的总宽度为全部宽度的0.9,剩下的0.1用来放置colorbar
#colorbar左下宽高
l=0.92
b=0.31
w=0.018
h=1-2*b
#对应l,b,w,h,设置colorbar位置
rect = [l,b,w,h]
cbar_ax = fig.add_axes(rect)
cb=plt.colorbar(im3, cax=cbar_ax, shrink=0.68)
#设置colorbar标签字体等
cb.ax.tick_params(labelsize=16)
font = {"family":"serif",
       "color": "black",
       "weight":"normal"}
# cb.set_label("T", fontdict=font, loc="top")
cb.ax.set_title("T2 ℃")

plt.savefig("t2_season_mean_wuwei1_pcolormesh.png", dpi=900,bbox_inches = 'tight')

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以按照以下步骤安装wrf-python: 1. 确保你的Python版本是2.7或3.6及以上版本,并且已经安装了pip工具。 2. 打开命令行终端,输入以下命令安装wrf-python: ``` pip install wrf-python ``` 3. 等待安装完成后,可以在Python环境中导入wrf模块进行使用。 注意:在安装wrf-python前需要先安装过wrf库,否则会出现安装失败的情况。同时,如果你使用的是Anaconda Python环境,可以在Anaconda Prompt中执行以上命令进行安装。 ### 回答2: wrf-python是一个用于处理和可视化WRF(Weather Research and Forecasting)模型输出数据的Python软件包。下面是wrf-python的安装步骤: 1. 安装Python环境:首先,请确保您的计算机上已经安装了Python解释器。可以从Python官方网站下载并安装最新版本的Python。 2. 安装依赖项:wrf-python依赖于一些第三方库,如numpy、matplotlib和xarray。可以使用pip命令来安装这些库。打开命令行界面,并运行以下命令: ``` pip install numpy matplotlib xarray ``` 3. 下载wrf-python:在安装完必要的依赖项后,可以从wrf-python的官方网站或GitHub页面下载最新的稳定版本。下载完成后,将其解压缩到您希望安装wrf-python的位置。 4. 安装wrf-python:进入解压缩后的wrf-python目录,并运行以下命令来安装wrf-python: ``` python setup.py install ``` 请注意,可能需要以管理员权限运行此命令。 5. 验证安装:安装完成后,您可以尝试导入wrf模块来验证安装是否成功。在Python解释器或任何Python脚本中,使用以下命令导入wrf模块: ```python import wrf ``` 如果没有出现错误信息,则表示安装成功。现在您就可以使用wrf-python来处理和可视化WRF模型的输出数据了。 以上是关于wrf-python安装的简要说明。但请注意,安装过程可能因个人计算机的配置和操作系统而有所不同。如果遇到任何安装问题,建议参考wrf-python的官方文档或向相关技术支持寻求帮助。 ### 回答3: wrf-python是一个用于处理WRF(Weather Research and Forecasting)模型输出数据的Python库。安装wrf-python需要按照以下步骤进行: 1. 首先,确保你已经安装了Python和pip。可以在终端或命令提示符中运行以下命令验证是否已安装: ``` python --version pip --version ``` 如果没有显示版本号,说明没有安装Python或pip,需要先进行安装。 2. 下载并安装wrf-python。可以在终端或命令提示符中运行以下命令: ``` pip install wrf-python ``` 这将自动下载并安装最新版本的wrf-python。 3. 安装完成后,可以在Python中导入wrf模块来使用wrf-python库。例如: ```python import wrf ``` 导入wrf模块后,就可以使用wrf-python提供的各种函数和工具来分析和处理WRF模型输出数据。 需要注意的是,安装wrf-python可能会有一些依赖包的要求,例如numpy、matplotlib和netCDF4等。如果安装过程中遇到缺少依赖包的错误,请根据错误提示手动安装相应的依赖包。 总之,安装wrf-python只需运行一条简单的pip命令,然后就可以在Python中使用wrf模块进行数据处理了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值