- 积分
- 7430
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-9-28
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 雾失流年 于 2016-8-20 15:32 编辑
用matlab已经近一年了,但是colorbar的调节问题一直是我的心头大患每次碰到需要设置不均匀间隔的colorbar只能求助于ncl了希望有大神能给个指点,一直都相信matlab也是可以画出理想中的图的
我用matlab画分布图的时候如下(图1),colorbar是均匀分布的,刻度也是均匀分布的
但是我现在希望可以得到像ncl的colorbar一样可以随意分配哪个数字间隔使用哪个颜色?不知道有没有人做过这个?------------------------------------分割线-------------------------------------------------------------------------------------------------
非常感谢7楼@thukd35 的帮助,现在问题已经解决啦所以前来更新一下
在做colorbar的时候希望将所有的负值变成一个颜色(负值意义不大),突出正值的变化,因此需要设置一个不等间隔的colorbar。
首先要创造一个colormap(这里使用了气象家园上某人的colomap。。。一时之间没搜到,就这样吧)
%创造colormap,第一个颜色是蓝色,下面十个颜色是渐变的橙色
aa = othercolor('BuOr_8',20);
aa(1:8,:) = [];
aa(2,:) = [];
然后就按照thukd35的方法将矩阵的值设置成你想要画的几个间隔
%将原始数据处理成11个色
bcc_dis(find(bcc_dis<0)) = -0.5;
bcc_dis(find(bcc_dis>=0&bcc_dis<0.1)) = 0.5;
bcc_dis(find(bcc_dis>=0.1&bcc_dis<0.2)) =1.5;
bcc_dis(find(bcc_dis>=0.2&bcc_dis<0.3)) = 2.5;
bcc_dis(find(bcc_dis>=0.3&bcc_dis<0.4)) = 3.5;
bcc_dis(find(bcc_dis>=0.4&bcc_dis<0.5)) = 4.5;
bcc_dis(find(bcc_dis>=0.5&bcc_dis<0.6)) = 5.5;
bcc_dis(find(bcc_dis>=0.6&bcc_dis<0.7)) = 6.5;
bcc_dis(find(bcc_dis>=0.7&bcc_dis<0.8)) = 7.5;
bcc_dis(find(bcc_dis>=0.8&bcc_dis<0.9)) = 8.5;
bcc_dis(find(bcc_dis>=0.9&bcc_dis<1)) = 9.5;
在这里为了方便起见,所有小于0的数设置成-0.5,0-0.1之间的设置成0.5,确定区间画颜色更明了一些
最后就是更改colorbar的tick
%修改colorbar
colormap(aa)
h = colorbar;
caxis([-1,10]);
h.Ticks = -1:10;
h.TickLabels = [-1,0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1];
set(h,'location','southoutside')
这样设置就保证了所有小于0的数都变成了-0.5,且落在区间[-1,0],其标签对应了-1-0;所有0-0.1之间的数变成了0.5,落在区间[0,1],其标签对应了0-0.1
不会贴代码将就着看看吧
|
-
原始分布图,由于负值地区意义不大,想将所有负值地区变成一个颜色
-
将所有负值变成统一的蓝色,正值区是橙色
评分
-
查看全部评分
|