- 积分
- 3799
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-7-6
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 Lighting 于 2017-5-21 20:37 编辑
2017.5.21
声明:
此程序在某些情况下的结果确实不尽如人意,因此为了防止造成不必要的影响,在找到完美解决方案之前关闭程序下载。
最近看到有人提出了关于设置不等间距colorbar 的新用法,非常开心又有新的用法了。
http://bbs.06climate.com/forum.php?mod=viewthread&tid=51247&extra=page%3D4
帖子中提到本贴一楼提出的方法有问题,顿时让我感觉头顶浇了一盆冷水啊~赶紧再检查一下本贴提供的方法是不是也存在相同的问题。
2017.4.8 更新
之前的更新对比了 ncl 和 matlab 的不等间距设置,但ncl使用了lambert 投影,对比起来可能并不是很好,此次更新全部不加投影,对比python,matlab,ncl 不等间距colorbar的设置。
鉴于上传图片,效果不佳,因此脚本和对比图均放到网盘中。
https://pan.baidu.com/s/1kVA0HWN
个人感觉:matlab 和 ncl 设置的不等间距 colorbar 几乎没有区别,但python 设置的不等间距 colorbar 和 ncl及matlab设置的效果差异明显。仅提供测试,不作评价。
=====================================================================
忙里偷闲把之前一直想实现的设置不等间距colorbar完成了,实现方法不能说是完美,只是利用patch命令重新绘制了一个颜色图,已经测试了一些colorbar类型的设置,暂时并没有出现严重问题。
既然已经完成了,现在特上传以便大家测试,欢迎提供测试结果,如有bug欢迎反馈。
z的范围为[-6.5259 8.0436]
- % figure 1
- figure
- [c, h] = contourf(z, [floor(min(min(z))) 0 1 3 6 ceil(max(max(z)))], 'linestyle', '--');
- caxis([floor(min(min(z))) ceil(max(max(z)))])
- clabel(c, h)
- creatColor(h, [floor(min(min(z))) 0 1 3 6 ceil(max(max(z)))], jet(5))
复制代码图1表示把小于0的设置为一个颜色,大于6的设置为一种颜色,其余自定义区间
- % figure 2
- figure
- [c, h] = contourf(z, [floor(min(min(z))) -6, -3, -1 0 1 3 6 ceil(max(max(z)))], 'linestyle', '--');
- caxis([floor(min(min(z))) ceil(max(max(z)))])
- clabel(c, h)
- creatColor(h, [floor(min(min(z))) -6 -3 -1 0 1 3 6 ceil(max(max(z)))], jet(8))
复制代码 图2表示小于-6设置为一种颜色,大于6的设置为一种颜色,其余区间分别对应
- % figure 3
- figure
- [c, h] = contourf(z, [-6, -3, -1 0 1 3 6 ceil(max(max(z)))], 'linestyle', '--');
- caxis([-6 ceil(max(max(z)))])
- clabel(c, h)
- creatColor(h, [ -6 -3 -1 0 1 3 6 ceil(max(max(z)))], jet(7)
复制代码图3为大于6的设置为一种颜色,其余区间分别对应一种颜色。注意图中出现了一部分白色区域,这是因为白色区域是小于-6的区域,如果未指定颜色,matlab默认使用白色填充。
- % figure 4
- figure
- [c, h] = contourf(z, [-7, -3, -1 0 1 3 6], 'linestyle', '--');
- caxis([-7 6])
- clabel(c, h)
- creatColor(h, [ -7 -3 -1 0 1 3 6], jet(6))
复制代码 图4设置为小于-3的设置为一种颜色,大于6的为一种颜色,其余分别对应。
- % figure 5
- figure
- [c, h] = contourf(z, [floor(min(min(z))) -6 -3 -1 0 ceil(max(max(z)))], 'linestyle', '--');
- caxis([floor(min(min(z))) ceil(max(max(z)))])
- clabel(c, h)
- creatColor(h, [floor(min(min(z))) -6 -3 -1 0 ceil(max(max(z)))], jet(5))
复制代码 图5表示大于0的设置为一种颜色,小于-6为一种颜色,其余分别对应。
以上使用的是jet中的颜色模式,关于颜色的设置,均可自定义,目前仅支持RGB三元组。暂时不提供设置colorbar宽度等相关属性。
关于可能需要的功能还没有具体想法,因此,此程序仅是一个雏形,如果各位有一些好的想法,欢迎提出。
|
评分
-
查看全部评分
|