欢迎光临散文网 会员登陆 & 注册

Python-Cartopy对于北极地区的可视化基础教程

2022-11-29 22:35 作者:永不磨灭的希望  | 我要投稿

一、安装

方法一:在网好的情况下

在Anaconda prompt 输入 conda install -c conda-forge cartopy 然后enter

方法二:在网不太好的情况下

conda install geos
conda install Shapely
conda install pyshp

随后:conda install cartopy

二、投影

导入库

from mpl_toolkits.basemap import Basemap

from matplotlib import pyplot as plt

from netCDF4 import Dataset

import scipy.ndimage as ndimage

# Load parameters

import math

import netCDF4 as nc

import cartopy.crs as ccrs

import matplotlib.ticker as mticker

import cartopy.feature as cfeature

import matplotlib.path as mpath

import cmaps

投影:

proj =ccrs.NorthPolarStereo(central_longitude=0)#设置地图投影

leftlon, rightlon, lowerlat, upperlat = (-180,180,60,90)#经纬度范围

img_extent = [leftlon, rightlon, lowerlat, upperlat]

fig1 = plt.figure(figsize=(15,15))#设置画布大小

f1_ax1 = fig1.add_axes([0.2, 0.3, 0.5, 0.5],projection = ccrs.NorthPolarStereo(central_longitude=0))#绘制地图位置

f1_ax1.set_extent(img_extent, ccrs.PlateCarree())

f1_ax1.coastlines()

g1=f1_ax1.gridlines(crs=ccrs.PlateCarree(), draw_labels=True, linewidth=1, color='gray',linestyle='--')

g1.xlocator = mticker.FixedLocator(np.linspace(-180,180,13))

g1.ylocator = mticker.FixedLocator(np.linspace(60, 90,4))

theta = np.linspace(0, 2*np.pi, 100)

center, radius = [0.5, 0.5], 0.44

verts = np.vstack([np.sin(theta), np.cos(theta)]).T

circle = mpath.Path(verts * radius + center)

levels = np.arange(5000,5600,50)

f1_ax1.set_boundary(circle, transform=f1_ax1.transAxes)

三、变量的可视化实现

c7=f1_ax1.contourf(lon_new,lat_new,ssh_new,transform=ccrs.PlateCarree(),cmap=cmaps.matlab_jet,levels=20)

position=fig1.add_axes([0.2, 0.25, 0.5, 0.025])

cb=fig1.colorbar(c7,cax=position,orientation='horizontal',format='%.1f',extend='both')#设置图标

四、与basemap库的优缺点对比(个人观点)

       我觉得如果你研究的是其他地区,其实这两个库用哪个都无所谓,但是像我要重点研究北冰洋,那么我觉得cartopy更方便一些,因为它的纬度label可以直接通过两行代码去调试,相对方便一些,具体如下:

cartopy运行结果
basemap运行结果

谢谢大家的浏览,对于编程我还是一个菜鸟,欢迎大家提出宝贵意见哦,这样才能进步嘛~

Python-Cartopy对于北极地区的可视化基础教程的评论 (共 条)

分享到微博请遵守国家法律