python气象可视化第二弹-黄河流域白化

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在学习了气象家园平流层的萝卜首发、晋陵小生优化的 maskout 模块白化功能之后。利用九大流域的shp文件,我对九大流域中黄河流域的降水分布进行了绘制。

一、使用maskout程序包的要点?

maskout是比较python+cartopy实现白化功能的一个比较好用的子程序。(1)在应用的过程中要注意相关的shp文件应该是地理坐标系,如果不是的话要转化坐标系。(详情参考:如何使用arcmap转换shp文件坐标系)(2)注意选择合适的region,尽量选择具有代表性的record。黄河的rencord在record(4)中
相应的maskout_hhriver里应该修改为下图所示:
在这里插入图片描述

二、使用步骤

1.引入库

代码如下(示例):

import os
import shapefile as shp
SHP = r'F:\mapshp\china_shp'
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import xarray as xr
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.io.shapereader import Reader
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
import numpy
import pandas as pd
import mask_hhriver
#设定新字体

2.绘制黄河流域降水分布图

代码如下(示例):

#设定新字体
from matplotlib.font_manager import FontProperties
lpfont = matplotlib.font_manager.FontProperties(fname='F:\python可视化\font\SimSun.ttf')
plt.rcParams.update({'font.size':16})

region=[95,120,32,42]
df=xr.open_dataset(r'E:\testdataset\precip.mon.mean.nc')
lat = df.lat
lon = df.lon
# lat = df['lat']  
# lon = df['lon'] 
pre0 = df['precip'] #含缺测值
pre1 = np.array(pre0)
pre_clim=np.nanmean(pre1,axis=0)
fig=plt.figure(dpi=600,figsize=(12,6))
proj=ccrs.PlateCarree()
ax = plt.axes(projection = proj)
ax.set_extent(region, crs = proj)
ax.set_xticks(np.arange(region[0], region[1] + 1, 5), crs = proj)
ax.set_yticks(np.arange(region[-2], region[-1] + 1, 2), crs = proj)
ax.xaxis.set_major_formatter(LongitudeFormatter(zero_direction_label=False))
ax.yaxis.set_major_formatter(LatitudeFormatter())
# Add 黄河流域&干流shp
c11=ax.contourf(lon,lat,pre_clim,np.arange(0,3,0.01),extend='both',transform=ccrs.PlateCarree(),cmap='gist_rainbow')
ax.add_geometries(Reader(r'F:/mapshp/hhriver/jichu/黄河干流epsg4324.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='k',linewidth=0.5)
clip=mask_hhriver.shp2clip(c11,ax,shpfile=os.path.join(SHP, 'China_nine_basinepsg4324.shp'),region=['Yellow River Basin'],proj= proj)
cbar=plt.colorbar(c11,shrink=0.75,aspect=20,fraction=.03,pad=0.02)   #aspect控制bar宽度,fraction控制大小比例,pad控制与图的距离
cbar.set_ticks(np.arange(0,3,0.3))            #设置colorbar范围和刻度标记间隔
cbar.ax.tick_params(labelsize=12, direction='in', right=False)
#出图
plt.savefig('prehh.png',dpi=600)
plt.show()

在这里插入图片描述


总结

最后还可以对图片进行润色,例如添加标题等等。参考气象水文科研猫发布的Python可视化中国区域地面气象要素驱动数据集—以黄河流域为例。基本实现了黄河流域的白化功能。
参考图

j

  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值