【问题标题】:MATLAB set color map color rangeMATLAB设置颜色图颜色范围
【发布时间】:2016-01-21 06:40:42
【问题描述】:

我有一个使用补丁的 3D 绘图,默认颜色图是 jet,因为我使用的是 R2014a。所以我使用

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

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

【问题讨论】:

    标签: matlab colors matlab-figure color-scheme


    【解决方案1】:

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

    应该产生什么:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多