使用colormap

时间:2015-09-30 22:16:50

标签: matlab matrix colormap

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

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

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

由于

2 个答案:

答案 0 :(得分:1)

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的原因

    然后只选择一个从白色开始的色彩映射。

  4. 我个人会选择方法1。

答案 1 :(得分:0)

简单的解决方案:

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

% apply new colormap
colormap(cmap);

% display matrix 
imagesc(A);

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