我有一个使用补丁的3D绘图,默认的colormap是jet,因为我正在使用R2014a。所以我使用
cMap=hsv(250);
colormap(cMap);
caxis([min(M(:)) max(M(:))]);
但是当值增加时,颜色从深蓝色变为浅蓝色,然后变为深红色。这对我来说是不可取的,因为我希望当值增加时颜色从浅色变为深色。那么我怎样才能调整色彩图,使其随着值的增加从浅蓝色或白色变为深红色? 谢谢。
答案 0 :(得分:4)
有很多不同的色彩映射,您也可以制作自己的自定义色彩映射。使用doc colormap
更详细地查看它们:
如果您正在使用HSV色彩图并且只看到蓝色到红色,那么这是因为您的色轴限制是这样的,即只对色图的那一部分进行采样。因此,如果您的数据范围从0.5到1.0,但您将颜色轴设置为caxis([0.0 1.0])
,那么您只能看到颜色图中的一半颜色。
为了获得您描述的色彩映射,您可以使用此方法指定最小和最大颜色,并创建一个颜色映射,从一个颜色映射到另一个颜色映射。请注意,您必须根据绘图的限制设置适当的颜色轴值(surf
等命令会自动拉伸以包含所有颜色)。
% number of map indices
Nmap = 64;
% colormap from cyan to red
cMin1 = [0 1 1];
cMax1 = [1 0 0];
cMap1 = zeros(Nmap,3);
for i = 1:Nmap;
cMap1(i,:) = cMin1*(Nmap - i)/(Nmap - 1) + cMax1*(i - 1)/(Nmap - 1);
end
% colormap from white to red
cMin2 = [1 1 1];
cMax2 = [1 0 0];
cMap2 = zeros(Nmap,3);
for i = 1:Nmap;
cMap2(i,:) = cMin2*(Nmap - i)/(Nmap - 1) + cMax2*(i - 1)/(Nmap - 1);
end
% make up some data
Z = linspace(0,1,100)'*ones(1,100);
% plot with HSV colormap
figure
surf(Z,'edgealpha',0);
colormap('hsv');
% plot with cyan-to-red colormap
figure
surf(Z,'edgealpha',0);
colormap(cMap1);
% plot with white-to-red colormap
figure
surf(Z,'edgealpha',0);
colormap(cMap2);
哪个应该产生: