Python-地球科学-大气科学-可视化绘图系列(二)——利用basemap叠加地图,并添加白化效果(代码+示例)
时间:2020-01-14
本文章向大家介绍Python-地球科学-大气科学-可视化绘图系列(二)——利用basemap叠加地图,并添加白化效果(代码+示例),主要包括Python-地球科学-大气科学-可视化绘图系列(二)——利用basemap叠加地图,并添加白化效果(代码+示例)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
推荐参考链接:https://cloud.tencent.com/developer/article/1559267
1 白化单图代码: 2 import numpy as np 3 import xarray as xr 4 from mpl_toolkits.basemap import Basemap 5 import matplotlib.pyplot as plt 6 from matplotlib.patches import Polygon 7 import matplotlib.patches as mpatches 8 9 ds = xr.open_dataset('2019072300.006.nc') 10 t = ds['value'] 11 lons = ds.lon.data 12 lats = ds.lat.data 13 temp = xr.DataArray(t.data.T, coords=[lats,lons], dims=['latitude','longitude']) 14 # 创建画图空间 15 fig, ax = plt.subplots() 16 m = Basemap(projection='cyl',resolution='i',llcrnrlon=lons.min(),llcrnrlat=lats.min(), 17 urcrnrlon=lons.max(),urcrnrlat=lats.max(),lon_0=120.,lat_0=90) 18 Lon,Lat = np.meshgrid(lons[:],lats[:]) 19 X,Y = m(Lon,Lat) 20 21 shp_info3 = m.readshapefile("CHN_adm_shp\\CHN_adm3",'states',drawbounds=False,linewidth = 0.4,zorder=10) 22 for info, shp in zip(m.states_info, m.states): 23 proid = info['NAME_1'] # 可以用notepad打开CHN_adm1.csv文件,可以知道'NAME_1'代表各省的名称 24 if proid == 'Hubei': 25 poly = Polygon(shp,facecolor='None',edgecolor='b', lw=0.8) 26 ax.add_patch(poly) 27 else: 28 poly = Polygon(shp,facecolor='w',edgecolor='w', lw=0.8) 29 ax.add_patch(poly) 30 31 #市一级底图 32 shp_info2 = m.readshapefile("CHN_adm_shp\\CHN_adm2",'states',drawbounds=False,linewidth = 0.4,zorder=10) 33 for info, shp in zip(m.states_info, m.states): 34 proid = info['NAME_1'] 35 if proid == 'Hubei': 36 poly = Polygon(shp,facecolor='None',edgecolor='black', lw=0.8) 37 ax.add_patch(poly) 38 cs=m.contourf(Lon,Lat,t.data.T,np.arange(0,1.1,0.1),cmap='rainbow') 39 legend_elements = [mpatches.Patch(facecolor='#a50026',label='0-0.1'), 40 mpatches.Patch(facecolor='#da362a',label='0.1-0.2'), 41 mpatches.Patch(facecolor='#f67a49',label='0.2-0.3'), 42 mpatches.Patch(facecolor='#fdbf6f',label='0.3-0.4'), 43 mpatches.Patch(facecolor='#feeda1',label='0.4-0.5'), 44 mpatches.Patch(facecolor='#ebf7a3',label='0.5-0.6'), 45 mpatches.Patch(facecolor='#b7e075',label='0.6-0.7'), 46 mpatches.Patch(facecolor='#75c465',label='0.7-0.8'), 47 mpatches.Patch(facecolor='#249d53',label='0.8-0.9'), 48 mpatches.Patch(facecolor='#006837',label='0.9-1')] 49 plt.legend(handles=legend_elements, loc='lower right',title='NDVI') 50 # cbar = plt.colorbar(cs,orientation='horizontal',label='Potential')
个例效果:
1 多图代码: 2 import numpy as np 3 import xarray as xr 4 from mpl_toolkits.basemap import Basemap 5 import matplotlib.pyplot as plt 6 from matplotlib.patches import Polygon 7 import matplotlib.patches as mpatches 8 9 ds = xr.open_dataset('2019072300.006.nc') 10 t = ds['value'] 11 lons = ds.lon.data 12 lats = ds.lat.data 13 temp = xr.DataArray(t.data.T, coords=[lats,lons], dims=['latitude','longitude']) 14 # 创建画图空间 15 fig, ax = plt.subplots(2,2,figsize=(15,15)) 16 for ii in np.arange(4): 17 print('ii:::::',ii) 18 plt.sca(ax[np.unravel_index(ii,(2,2))]) # 获取一维索引在二维矩阵中的索引 19 m = Basemap(projection='cyl',resolution='i',llcrnrlon=lons.min(),llcrnrlat=lats.min(), 20 urcrnrlon=lons.max(),urcrnrlat=lats.max(),lon_0=120.,lat_0=90) 21 Lon,Lat = np.meshgrid(lons[:],lats[:]) 22 X,Y = m(Lon,Lat) 23 24 shp_info3 = m.readshapefile("CHN_adm_shp\\CHN_adm3",'states',drawbounds=False,linewidth = 0.4,zorder=10) 25 for info, shp in zip(m.states_info, m.states): 26 proid = info['NAME_1'] # 可以用notepad打开CHN_adm1.csv文件,可以知道'NAME_1'代表各省的名称 27 if proid == 'Hubei': 28 poly = Polygon(shp,facecolor='None',edgecolor='b', lw=0.8) 29 ax[np.unravel_index(ii,(2,2))].add_patch(poly) 30 else: 31 poly = Polygon(shp,facecolor='w',edgecolor='w', lw=0.8) 32 ax[np.unravel_index(ii,(2,2))].add_patch(poly) 33 34 #市一级底图 35 shp_info2 = m.readshapefile("CHN_adm_shp\\CHN_adm2",'states',drawbounds=False,linewidth = 0.4,zorder=10) 36 for info, shp in zip(m.states_info, m.states): 37 proid = info['NAME_1'] 38 if proid == 'Hubei': 39 poly = Polygon(shp,facecolor='None',edgecolor='black', lw=0.8) 40 ax[np.unravel_index(ii,(2,2))].add_patch(poly) 41 42 cs=m.contourf(Lon,Lat,t.data.T,np.arange(0,1.1,0.1),cmap='rainbow') 43 44 cbar = plt.colorbar(cs, ax=ax.ravel().tolist(), orientation='horizontal') 45 plt.savefig('multi_masked.jpg',bbox_inches = 'tight')
效果如下:
原文地址:https://www.cnblogs.com/zhanling/p/12193031.html
- BOOtstrap源码分析之 tooltip、popover
- 两个链表的第一个公共结点
- mac下Android开发环境搭建
- 三位数的排列组合
- Undefined symbols for architecture i386:"_OBJC_CLASS_$_xx", referenced from: 解决方法
- Xcode5.0使用iOS6.1SDK及模拟器
- 内存泄露
- 深入理解及应用Position
- 数字营销人的年终奖该如何翻倍?这里有5个秘籍
- 处理日期时间NSDate
- 云安全(第1部分):从何开始
- ios 开发,通讯录信息调用常用方法,这个比较全,不用再整理了
- 深入理解和应用Float属性
- 堆和栈的区别
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHPUnit + Laravel单元测试常用技能
- php接口隔离原则实例分析
- laravel实现按月或天或小时统计mysql数据的方法
- laravel model模型处理之修改查询或修改字段时的类型格式案例
- 对laravel的session获取与存取方法详解
- php 中self,this的区别和操作方法实例分析
- Laravel使用原生sql语句并调用的方法
- Yii框架自定义数据库操作组件示例
- laravel 使用事件系统统计浏览量的实现
- PHP之多条件混合筛选功能的实现方法
- PHP多进程简单实例小结
- 解决laravel5中auth用户登录其他页面获取不到登录信息的问题
- Yii框架学习笔记之应用组件操作示例
- laravel 之 Eloquent 模型修改器和序列化示例
- TP5框架请求响应参数实例分析