【问题标题】:Set color of specific values with colormap使用颜色图设置特定值的颜色
【发布时间】:2015-12-28 20:27:51
【问题描述】:

所以我想要完成的一个小版本是我有一个矩阵 A;

A = [0 1 0; 2 0 0;1 3 6;9 0 1];
imagesc(A)

所以当我使用 imagesc(A) 时,我会得到一个漂亮的网格,每个值都用不同的颜色表示。但是,我希望能够将 0 的值专门设置为白色,并且理想情况下能够更改我认为合适的其他颜色,例如,如果我知道两个值代表相同的东西,例如 3 和 6,那么它们可以设置为相同或相对相似的颜色。 imagesc 是不是使用错误的命令,因为据我所知它使用了颜色渐变。

谢谢

【问题讨论】:

    标签: matlab matrix colormap


    【解决方案1】:

    2 个选项:

    1. 您可以创建自己的颜色图,如How to create a custom colormap programmatically? 所示
    2. 或者简单地将您的矩阵A 映射到一个可以根据需要着色的矩阵。因此,如果您知道您希望 36 具有相同的颜色,请创建一个映射函数来实现这一点。然后您使用A 来索引地图,因此地图的第 3 和第 6 个元素必须相同,例如

      map = [1, 2, 3, 4, 5, 6, 4, 7, 8, 9, 10];
      imagesc(map(A+1))
      

      注意map 中的元素 4 和 7 是相同的,因为您的 A 值从 0 开始,这也是第二行中有 +1 的原因。

      然后只需选择从白色开始的颜色图。

    我个人会选择方法 1。

    【讨论】:

    • 谢谢,对不起,我不知道我是怎么找不到第一个我是这个网站和一般编程的新手,无论哪种方式问题都解决了,再次感谢。
    【解决方案2】:

    简单的解决方案:

    % get colormap and set first value to white
    cmap = colormap;    
    cmap(1,:) = [1 1 1];
    
    % apply new colormap
    colormap(cmap);
    
    % display matrix 
    imagesc(A);
    

    显然你可以用同样的方式改变其他值的颜色

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      • 2013-03-17
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      相关资源
      最近更新 更多