【问题标题】:How to control colorbar color ranges in Matlab plots?如何控制 Matlab 图中的颜色条颜色范围?
【发布时间】:2020-01-25 14:20:51
【问题描述】:

我有以下代码:

[X,Y,Z] = peaks(30);
crange = 1.5;

[maxval dummy] = max(Z(:));
[minval dummy] = min(Z(:));

% green, yellow, red
cmap = [0 1 0; 1 1 0; 1 0 0];  

figure
colormap(cmap); 
surf(X,Y,Z);
caxis([30 55]);
cbh=colorbar;
set(cbh,'Ytick',[30 32 38 55]);

我的目标是设置颜色条的界限,使颜色如下所示:

  • 从 30 到 32 的绿色
  • 从 32 到 38 的黄色
  • 红色从 38 到 55

我相信我应该以某种方式更改 CData 变量,所以我使用了这些代码行但没有成功:

i = findobj(cbh,'type','image');
set(i,'cdata',[30 32 38]','YData',[30 55]);

【问题讨论】:

    标签: matlab colors customization colorbar colormap


    【解决方案1】:

    您的自定义颜色条由(32-30 = ) 2 + (38-32 = ) 6 + (55-38 = ) 17 = 25“颜色单位”组成。所以一个简单的技巧就是复制每种颜色所需的“单位”数量:

    function q58097577
    [X,Y,Z] = peaks(30); Z = (Z - min(Z(:)))*5;
    
    % green, yellow, red
    nG = 32-30; nY = 38-32; nR = 55-38;
    cmap = [ repmat([0 1 0], [nG 1]); repmat([1 1 0], [nY,1]); repmat([1 0 0], [nR,1]) ];  
    
    figure()
    colormap(cmap); 
    surf(X,Y,Z);
    caxis([30 55]);
    cbh=colorbar;
    set(cbh,'Ytick',[30 32 38 55]);
    

    导致:

    【讨论】:

    • 非常感谢!!我真的很感激:)
    • @Federico 不客气!如您所见,解决方案非常简单,但这只是因为您有整数颜色。处理浮点数时要麻烦得多,因为并不总是清楚每个“颜色单元”的大小应该是多少,因此总共需要多少个。您最终可能会得到具有一些荒谬步骤的颜色图,例如 7153。
    猜你喜欢
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    相关资源
    最近更新 更多