爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 18996|回复: 6

[经验总结] 一张图画不同的colormap

[复制链接]

新浪微博达人勋

发表于 2020-11-29 16:07:31 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 callmezoro 于 2020-11-29 16:14 编辑

今天画地形图的时候遇到的问题,如果画全球的话陆地海洋的深度/高度极值都差不多,可以直接设置范围是-10000 - 10000 m(例如),但是最近画沿海区域,陆地上的高度没有那么高,但是海洋却很深,再用对称的范围就显得没那么好看,但是画地形的colormap要求0m一定要在最中间,调不等间距的colorbar当然可以,但是麻烦程度有点高,干脆直接画两个colormap上去。
大体原理就是先生成两个矩阵,一个海洋是nan,一个陆地是nan,然后用plt.axes()生成两个完全一样的坐标轴就可以了

一个colormap

一个colormap

这幅图就是用的一个范围,从-11000 - 11000,

两个colormap

两个colormap

这副图陆地是-5000 -5000, 海洋是-11000 - 11000。这种画法就比较适合那种不需要加colorbar的图,缺点就是画图的适合matplotlib会报warning,说我生成了两个一样的axes叠加画图


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-11-29 16:42:33 | 显示全部楼层
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-11-29 18:28:16 | 显示全部楼层

测试了一下这个代码,确实可以画不等间隔的colorbar,但是有几个问题:
第一,matplotlib需要升级,我之前的版本是3.1.1,其中一个function无法使用,升级到3.3.2之后spyder就闪退了,处理了半天才解决
第二,设置cmap的时候需要把读入colormap然后选择范围,比如这个colormap的0:0.5的部分用于画海洋,0.5:1的部分用于画陆地,遇到有的colormap在海洋陆地处有突变,这个选择的节点需要多试几次。(我尝试了好久,总是把我的浅海的位置画成绿色)尤其是使用contourf画图的时候更是难调
可能是由于我使用的colormap之间变化太过剧烈,我就把colormap换成了ncl_default,效果就好很多

总结来说是一个非常好的方法,但是比较吃colormap,对于需要画出colorbar的图是一个非常好用的方法,我这个方法也只是想分享另一种思路,可以不用调colormap间隔,因为它本来的用途是用来在图上画两种不同的数据,例如陆地画气温,海洋画ssh并使用不同的colormap(随便想的例子,应该没有人会把这两个画在一块吧

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-11-30 10:15:06 | 显示全部楼层
callmezoro 发表于 2020-11-29 18:28
测试了一下这个代码,确实可以画不等间隔的colorbar,但是有几个问题:
第一,matplotlib需要升级,我之 ...

对,这个新函数似乎是有一些BUG,不过如果是我,我也会像你一样,陆地海洋风别语句cmap画,然后叠加的做法,不过我不太理解ax报错的原因。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-1-5 18:22:22 | 显示全部楼层
你z整体的配色好好看, 可以请教一下你用的什么色卡吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-1-6 10:48:00 | 显示全部楼层
candyzh 发表于 2021-1-5 18:22
你z整体的配色好好看, 可以请教一下你用的什么色卡吗

GMT_globe,具体的rgb可以在ncl上找到 http://www.ncl.ucar.edu/Document ... les/GMT_globe.shtml
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-1-7 17:01:20 | 显示全部楼层
callmezoro 发表于 2021-1-6 10:48
GMT_globe,具体的rgb可以在ncl上找到 http://www.ncl.ucar.edu/Document/Graphics/ColorTables/GMT_glob ...

Thanks
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表