看過很多大佬繪制過中國地圖趟章,有R-ggplot的,也有python-geopandas等,還有其他cartopy
等的作圖包招盲,我就不一一舉例了,今天用proplot這個(gè)包,這個(gè)包的簡介可以參考鏈接proplot,主要的知識點(diǎn)如下:
-
proplot
繪制中國地圖 -
ax.inset
添加南海子圖
導(dǎo)入需要的包
import os
import numpy as np
import xarray as xr
import proplot as plot
import cartopy.crs as ccrs
from cartopy.io.shapereader import Reader
import maskout
shp_path = 'D:/China_shp'
導(dǎo)入數(shù)據(jù)
- 以歷史氣溫?cái)?shù)據(jù)為例(historical)
##### 數(shù)據(jù)讀取
ds = xr.open_dataset('*historical*.nc')
tas = ds['tas'][75] # 隨意選擇的年份
#截取一段時(shí)間內(nèi)的降水作為繪圖的數(shù)據(jù)源
tas -= 273.15
lon = ds.lon
lat = ds.lat
lon_range = lon[(lon > 70) & (lon < 140)]
lat_range = lat[(lat > 0) & (lat < 60)]
tas_region = tas.sel(lon=lon_range, lat=lat_range)
levels = plot.arange(-5,30,5)
主圖&白化[1]
fig, axs = plot.subplots(width=6,proj=ccrs.PlateCarree())
# First axis
ax = axs[0]
m = ax.contourf(tas_region,
cmap='CoolWarm',
levels=levels,
extend='both')
# 搜白化教程
# http://bbs.06climate.com/forum.php?mod=viewthread&tid=42437&highlight=%CD%EA%C3%C0%B0%D7%BB%AF
con_mask = maskout.shp2clip(m, ax, r'E:\maskout\country1.shp', ['China'])
ax.add_geometries(Reader(os.path.join(shp_path,
'bou2_4l.shp')).geometries(),
ccrs.PlateCarree(),
facecolor='none',
edgecolor='black',
linewidth=0.5)
ax.format(
coast=False, labels=True, borders=False,
latlim=(10, 60),
lonlim=(70, 140),
lonlines=10, latlines=10,
)
[1]地圖白化
添加南海子圖
# Create inset axes representing a "zoom-in"
# https://proplot.readthedocs.io/en/latest/insets_panels.html
iax = ax.inset([0.83,0,0.175,0.3]) # 不同的主圖參數(shù)形娇,這個(gè)參數(shù)設(shè)置也不一樣锰霜,自己摸索
n = iax.contourf(tas_region,
cmap='CoolWarm',
levels=levels,
extend='both')
con_mask = maskout.shp2clip(n, iax, r'E:\maskout\country1.shp', ['China'])
iax.add_geometries(Reader(os.path.join(shp_path,
'bou2_4l.shp')).geometries(),
ccrs.PlateCarree(),
facecolor='none',
edgecolor='black',
linewidth=0.5)
iax.format(
coast=False, labels=False, borders=False,
latlim=(0, 26),
lonlim=(105, 125),
lonlines=10, latlines=10,
)
fig.colorbar(m, loc='r')
出圖
China
總結(jié)
Proplot
這個(gè)包太強(qiáng)大了筹误,在這里就不細(xì)說了!共同學(xué)習(xí)癣缅,那就這樣吧厨剪!(時(shí)間緊,任務(wù)重/奮斗臉)友存,寫這個(gè)就當(dāng)是拋磚引玉吧祷膳!希望大家多多指教!