使用颜色图设置特定值的颜色

Set color of specific values with colormap

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

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

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

谢谢

2 个选项:

  1. 您可以创建自己的颜色图,如 How to create a custom colormap programmatically?
  2. 所示
  3. 或者简单地将您的矩阵 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。

简单的解决方案:

% get colormap and set first value to white
cmap = colormap;    
cmap(1,:) = [1 1 1];

% apply new colormap
colormap(cmap);

% display matrix 
imagesc(A);

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