赞
踩
MATLAB中自定义colormap后,colorbar的颜色色标表示的值默认是等间距的,这里简单提供一下想要得到不等间距显示数据的方法。
例如:想要colorbar颜色表示[[-30,-27],(-27,-20],(-20,-15],(-15,-10],(-10,-5],(-10,-5],(-5,-1],(-1,0],......,[27,30]]。
先自定义colormap,共14种颜色色标
colorRef=[
126 224 254
0 224 254
0 176 176
0 254 0
0 196 0
0 128 0
200 200 200
200 200 200
254 0 0
254 88 88
254 176 176
254 124 0
254 210 0
254 254 0
]; %色标分别对应上述数据的范围
画图时,设置色标显示范围为caxis([-30,30]),若我将上面的colorRef的色标改为60种,那么就意味着colorbar的刻度尺等间距递增表示从-30:1:30,共60份。然后按照我想要的数据范围按比例添加色标,比如色标[126 224 254]对应[-30,-27],那么在colorRef中将色标[126 224 254]写三次,代表他占60份色标中的三份,一次类推,得到新的colormap,即
colorRef=[
126 224 254
126 224 254
126 224 254
0 224 254
0 224 254
0 224 254
0 224 254
0 224 254
0 224 254
0 224 254
0 176 176
0 176 176
0 176 176
0 176 176
0 176 176
0 254 0
0 254 0
0 254 0
0 254 0
0 254 0
0 196 0
0 196 0
0 196 0
0 196 0
0 196 0
0 128 0
0 128 0
0 128 0
0 128 0
200 200 200
200 200 200
254 0 0
254 0 0
254 0 0
254 0 0
254 88 88
254 88 88
254 88 88
254 88 88
254 88 88
254 176 176
254 176 176
254 176 176
254 176 176
254 176 176
254 124 0
254 124 0
254 124 0
254 124 0
254 124 0
254 210 0
254 210 0
254 210 0
254 210 0
254 210 0
254 210 0
254 210 0
254 254 0
254 254 0
254 254 0
];
最后在画图时, 设置以下参数即可 colormap(ColorRef/255.); caxis([-30,30]);c = colorbar; c.Ticks = [-27,-20,-15,-10,-5,0,5,10,15,20,27];
得到结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。