本节提要:使用cartopy进行市县的色块填色、模仿geopandas绘制颜色图

一、利用cartopy进行市县的色块填色

其实geopandas在这方面比cartopy更加专业,由于是基于pandas的,所以在和表格类数据连接上的效果更好,不过cartopy也还能完成任务,虽然我想出的是个笨办法。

首先,还是通过meteoinfo或者GIS等软件读取图层属性:

然后在数据表中按照相同的市县顺序排列名称:

这一步是最麻烦的,但是一般市县也就十个以内,这一步工作是一劳永逸的。因为绘制业务地图的shp文件基本不会更改,所以排好序之后,每次制图只用更改excel(或者存储数据的文件)即可。

然后读入数据,绘制地图,关键代码如下:dangercolors=df['预警颜色']

shp=shpreader.Reader(shppath)

for city,color in zip(shp.geometries(),dangercolors):#zip——并行遍历函数

ax.add_geometries([city],proj,facecolor=color,edgecolor='k')

zip是py内置函数,可以直接调用,表示并行遍历。比如在这段程序中,for··· in ···逐个循环,在city循环的同时,color也同时循环,这样就可以实现绘制地图的同时给地图填色。

如果需要绘制新图,只需要修改excel中的数据即可:

二、使用cartopy绘制等级颜色图

前面的步骤和一中的一致:shppath=r'E:\shp\行政边界.shp'

filepath=r'C:\Users\lenovo\Desktop\恩施分县.xlsx'

df=pd.read_excel(filepath)

size=df['数值']#读取旱情程度

shp=shpreader.Reader(shppath)#读取地理信息

max=100#确定旱情最大值,旱情程度从0到100

for city,s in (zip(shp.geometries(),size)):#并行遍历两个列表

ax.add_geometries([city],proj,lw=1,facecolor=cmap((s/max)))#,edgecolor='k')

position=fig.add_axes([0,0,0.9,0.05])

cmap=plt.get_cmap('Reds')#获取颜色表

norm = mpl.colors.Normalize(vmin=0, vmax=100)

cb=fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),extend='both',

cax=position, orientation='horizontal',shrink=1)

cb.set_label('墒情利好<<<>>>作物可能绝收',fontdict={'size':6})

cb.ax.set_title('干旱程度')

在添加地理信息时,对facecolor同步填色,填色依据为该地区墒情数值与最大值max的相对大小。然后通过matplotlib官网上的自定义colorbar例子添加色条。实际上这个色条算是无源色条,和上面地图的填色只存在大小表示关系。像contourf填色图的色条就叫有源色条fig.colorbar(ax=ax),向内部传入了ax,只要ax变了,colorbar也跟随改变。

三、使用自定义的颜色

在某些时候,库包自带的颜色无法满足要求时,需要自定义颜色列表,结合前面的降水量色条定制,可以完成这个目标。max=100

colorlevel=[0,70,75,80,85,90,95,100]#等级

colorlist=['tab:blue','tab:orange','tab:green','tab:red','tab:purple','tab:brown','tab:pink']#颜色列表

new_map=mcolors.ListedColormap(colorlist)#产生颜色映射

norm=mcolors.BoundaryNorm(colorlevel,new_map.N)#生成索引

for city,s in (zip(shp.geometries(),size)):

ax.add_geometries([city],proj,lw=1,facecolor=new_map((s/max)),edgecolor='k')

position=fig.add_axes([0,0,0.9,0.05])

sm=plt.cm.ScalarMappable(cmap=new_map,norm=norm)

sm._A=[]

cb=plt.colorbar(sm,cax=position,extend='both',orientation='horizontal',shrink=1,label='等级量值与颜色')

python气象绘图速成_Python气象绘图教程(十六)—Cartopy_6相关推荐

  1. python气象绘图速成_Python气象绘图Day-By-Day

    登录后查看更多精彩内容~ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 edwardli 于 2017-6-13 10:02 编辑 工作繁事多,先上结果供交流,回头不断细化. 我 ...

  2. python气象绘图速成_Python气象数据处理与绘图(11):矢量箭头图(风场,通量场)

    最近在计算波作用通量,正好就画到了矢量箭头图,画的过程中发现还是有很多细节需要注意的,那就直接进入正题吧. 首先,矢量箭头图是分为两种的,一种类似我们常见的风场(左图),另一种则是特殊的流场,也就是流 ...

  3. python实用黑客脚本_Python黑客攻防(十六)编写Dos脚本,进行容易攻击演示

    注:本篇文章为个人学习笔记仅供学习交流,请勿用于非法用途.转载须标明出处. 欢迎关注微信公众号:黑客帮 获取更多干货. Dos攻击简介 DOS:中文名称是拒绝服务,一切能引起DOS行为的攻击都被称为D ...

  4. python图像轮廓识别_Python+OpenCV图像处理(十六)—— 轮廓发现

    简介:轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓发现结果. 代码如下: importcv2 as cvimportnumpy as npdefcontou ...

  5. 【Visual C++】游戏开发四十八 浅墨DirectX教程十六 三维地形系统的实现

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  6. 【Visual C++】游戏开发四十八 浅墨DirectX教程十六 三维地形系统的实现

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhmxy555/article/details/8685546 作者:毛星云(浅墨) ...

  7. Wix 安装部署教程(十六) -- 自动生成多语言文件

    Wix 安装部署教程(十六) -- 自动生成多语言文件 原文:Wix 安装部署教程(十六) -- 自动生成多语言文件 因为持续集成需要,所有项目编译完之后生成一个多语言的安装包.之前生成mst文件都是 ...

  8. 群晖NAS教程(十六)、利用Docker安装GitLab管理代码工具

    为了更好的浏览体验,欢迎光顾勤奋的凯尔森同学个人博客 群晖NAS教程(十六).利用Docker安装GitLab管理代码工具 群晖DSM上安装GitLab有两种方式,一种是直接在群晖套件上安装,另一种是 ...

  9. Cesium教程(十六):动态数据三维可视化

    Cesium教程(十六):动态数据三维可视化 1.Cesium时间系统 Cesium时间系统在动态数据可视化中发挥着重要作用. 2.动态数据格式CZML CZML是Cesium团队制定的一种用来描述动 ...

最新文章

  1. java:接口和抽象
  2. awvs 13使用_如何解密AWVS?15行代码就够了!
  3. c语言获取时间并存储,如何在C程序中获取日期和时间值?
  4. Thrift介绍以及Java中使用Thrift实现RPC示例
  5. Boost字符串处理
  6. 如何在修改了默认值之后跟新
  7. python函数多次调用内存溢出_关于循环多次(具体160次左右)获取同一个句柄对象,不同实例,内存溢出的问题。...
  8. 设计潮流趋势|背景图案素材,增加设计对比和补充前景元素
  9. java object怎么拿字段_「Java面试秘籍」String不可变,如何理解
  10. 用springboot编写RestController之——详解RestController中获取请求的各种数据
  11. APP动态界面设计使用的利与弊
  12. Chrome离线安装Axure插件
  13. 三宝机器人怎么充电_三宝机器人说明书
  14. HTML5添加网页音效
  15. 【vue】生成条形码
  16. 陈文灯对话高分学子 定位07年考研数学复习导向
  17. Visual reasoning
  18. MATLAB - 旋度可视化
  19. 证明:1/n调和级数为何是发散的
  20. 《哈利·波特:霍格沃茨之谜》游戏特推出万圣节内容致敬黑魔法

热门文章

  1. Unity数据读写与存档(2)Json:成为神笔马良
  2. sqli-Labs————less-44
  3. 机器外接屏双屏显示的问题
  4. CNS可增值积分区块链应用未来趋势如何
  5. Framework7 页面 路由
  6. [置顶] 大学生如何让自己强大起来(计算机、电子方向)
  7. Latex 箭头 下标 符号上下写文字 正方形和三角形
  8. 企业如何建立数据分类分级制度
  9. 【leetcode】537. Complex Number Multiplication(Python C++)
  10. 完美解决微信浏览器内长按识别个人收款码的案例分享