美文网首页
Python||proplot 中国地图白化绘制

Python||proplot 中国地图白化绘制

作者: CopLee | 来源:发表于2020-12-04 08:12 被阅读0次

    看过很多大佬绘制过中国地图,有R-ggplot的,也有python-geopandas等,还有其他cartopy等的作图包,我就不一一举例了,今天用proplot这个包,这个包的简介可以参考链接proplot,主要的知识点如下:

    • proplot绘制中国地图
    • ax.inset添加南海子图

    导入需要的包

    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'
    

    导入数据

    • 以历史气温数据为例(historical)
    ##### 数据读取
    ds = xr.open_dataset('*historical*.nc')
    tas = ds['tas'][75] # 随意选择的年份
    #截取一段时间内的降水作为绘图的数据源
    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]) # 不同的主图参数,这个参数设置也不一样,自己摸索
    
    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

    总结

    Proplot这个包太强大了,在这里就不细说了!共同学习,那就这样吧!(时间紧,任务重/奋斗脸),写这个就当是抛砖引玉吧!希望大家多多指教!

    相关文章

      网友评论

          本文标题:Python||proplot 中国地图白化绘制

          本文链接:https://www.haomeiwen.com/subject/kstvwktx.html