MATLAB 设置颜色图颜色范围

MATLAB set color map color range

我有一个使用补丁的 3D 图,默认颜色图是 jet,因为我正在使用 R2014a.So 我使用

cMap=hsv(250);
colormap(cMap);
caxis([min(M(:)) max(M(:))]);

但是当值增加时,颜色从深蓝色变为浅蓝色,然后变为深红色。这对我来说是不可取的,因为我希望当值增加时颜色从浅色变为深色。那么如何调整颜色图,使其随着值的增加从浅蓝色或白色变为深红色? 谢谢。

有很多不同的颜色图,您也可以制作自己的自定义颜色图。使用 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);

应该产生: