Python+Cartopy绘制中国地图

36 篇文章 44 订阅
12 篇文章 15 订阅

前言

之前看了很多cartopy的教程,刚好手上有一份很久前下载的ERA5水汽数据,就练习一下吧。
maskout白化的代码和colorbar分割来自气象家园的大佬。代码及数据网盘链接提取码:vtmk

代码

import cartopy.crs as ccrs
import matplotlib.pyplot as plt 
import numpy as np
import netCDF4 as nc
import cartopy.feature as cfeature
import cartopy.io.shapereader as shpreader

file = r'ERA5_China.nc'
nc_data_object = nc.Dataset(file)

lons = nc_data_object.variables['longitude'][:]
lats = nc_data_object.variables['latitude'][:]
tcwv = np.asarray(nc_data_object.variables['tcwv'])[0]

lons_grid, lats_grid = np.meshgrid(lons, lats)

plt.rcParams['font.family'] = 'Arial'
plt.rcParams['font.size'] = 10
plt.rcParams['font.weight'] = 'bold'

china = shpreader.Reader('china1.shp').geometries()
proj = ccrs.PlateCarree()
fig = plt.figure(figsize=(6, 4.5))
ax = fig.add_subplot(1, 1 , 1, projection=proj)
ax.add_geometries(china, ccrs.PlateCarree(), facecolor='none', edgecolor='k', linewidth=1, zorder=1)

import matplotlib as mpl
from matplotlib.colors import ListedColormap, LinearSegmentedColormap
cmap = mpl.cm.RdBu
newcolors=cmap(np.linspace(0, 1, 256))
newcmp = ListedColormap(newcolors[30:226])

cf = ax.contourf(lons_grid, lats_grid, tcwv, levels=50, cmap=newcmp, 
                 transform=proj, extend='both') 
cb = fig.colorbar(cf, shrink=0.70, orientation='horizontal', pad=0.08)
cb.ax.set_xlabel('TCWV(kg/$cm^2$)', fontweight='bold')
cb.ax.tick_params(which='major', direction='in', length=3)
gl = ax.gridlines(alpha=0.5, linestyle='--', draw_labels=True, 
                   dms=True, x_inline=False, y_inline=False)
gl.right_labels = 0
gl.top_labels = 0
ax.add_feature(cfeature.COASTLINE.with_scale('50m'), linewidth=1)

ax_sub = fig.add_axes([0.6615,0.3,0.12,0.2], projection=proj)  # [*left*, *bottom*, *width*,*height*]
ax_sub.set_extent([105,125,0,25], crs=ccrs.PlateCarree())
ax_sub.add_feature(cfeature.COASTLINE.with_scale('50m'))
china2 = shpreader.Reader('china1.shp').geometries()
ax_sub.add_geometries(china2, ccrs.PlateCarree(), facecolor='none', edgecolor='r', linewidth=1, zorder=1)

import maskout
clip=maskout.shp2clip(cf, ax, r'F:\Py_project\geoVisiual\hls_cartopy_china_nanhai\china0') # 白化

在这里插入图片描述

  • 16
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值