Python-Cartopy對于北極地區(qū)的可視化基礎(chǔ)教程

一、安裝
方法一:在網(wǎng)好的情況下
在Anaconda prompt 輸入 conda install -c conda-forge cartopy 然后enter
方法二:在網(wǎng)不太好的情況下
conda install geos
conda install Shapely
conda install pyshp
隨后:conda install cartopy

二、投影
導(dǎo)入庫
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)#設(shè)置地圖投影
leftlon, rightlon, lowerlat, upperlat = (-180,180,60,90)#經(jīng)緯度范圍
img_extent = [leftlon, rightlon, lowerlat, upperlat]
fig1 = plt.figure(figsize=(15,15))#設(shè)置畫布大小
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)

三、變量的可視化實現(xiàn)
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')#設(shè)置圖標(biāo)

四、與basemap庫的優(yōu)缺點對比(個人觀點)
? ? ? ?我覺得如果你研究的是其他地區(qū),其實這兩個庫用哪個都無所謂,但是像我要重點研究北冰洋,那么我覺得cartopy更方便一些,因為它的緯度label可以直接通過兩行代碼去調(diào)試,相對方便一些,具體如下:


謝謝大家的瀏覽,對于編程我還是一個菜鳥,歡迎大家提出寶貴意見哦,這樣才能進步嘛~