Matlab 如何为imagesc中的颜色指定特定值
当在MATLAB中使用Matlab 如何为imagesc中的颜色指定特定值,matlab,colors,data-visualization,matlab-figure,colormap,Matlab,Colors,Data Visualization,Matlab Figure,Colormap,当在MATLAB中使用imagesc绘制时,我试图将矩阵的三个可能值指定给三种颜色 我只想imagesc()将0表示为白色,1表示为黑色,2表示为红色 最初imagesc()会执行此操作,但随着for循环的进行,1和2的颜色会互换 我已尝试重新排序分配给colormap()的颜色,但颜色仍然互换 这是我的密码: Grid = 10; M = zeros(Grid); M(3,1:3)=1;M(2,3)=1;M(1,2)=1; Black = [0 0 0]; White = [1 1 1]; R
imagesc
绘制时,我试图将矩阵的三个可能值指定给三种颜色
我只想imagesc()
将0表示为白色,1表示为黑色,2表示为红色
最初imagesc()
会执行此操作,但随着for循环的进行,1和2的颜色会互换
我已尝试重新排序分配给colormap()
的颜色,但颜色仍然互换
这是我的密码:
Grid = 10;
M = zeros(Grid);
M(3,1:3)=1;M(2,3)=1;M(1,2)=1;
Black = [0 0 0];
White = [1 1 1];
Red = [1 0 0];
Background = White;
colormap([Background; Red; Black])
figure()
imagesc(M)
…到目前为止,一切都很好。我在角落里有五个黑色正方形
然而,随着我的循环的进行和2的引入,矩阵如下所示:
0 0 0 0 0 0 0
0 2 1 0 0 0 0
1 0 1 0 0 0 0
0 1 1 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
但现在图像显示2为黑色,1为红色
如何维护颜色与值的关系?您的主要错误是在颜色映射中颠倒了红色和黑色。您这样做可能是因为将颜色按正确的顺序排列会使第一个矩阵中的像素变成红色,这是不需要的。其原因是像素值映射到颜色映射颜色的方式,可以通过显示
颜色栏来查看。您的自定义颜色映射碰巧起作用,因为红色
用于值约为0.5
的像素-其中没有
您需要做的是正确设置:
colormap([背景;黑色;红色])
集合(gca,'CLim',[02]);
然后,这就是初始矩阵的情况(请注意,图像中没有红色像素,但彩色贴图已准备就绪):
谢谢,但这仍然不起作用,对不起。现在我的代码是:colormap([Background;Black;Red])set(gca,[CLim',[02]);imagesc(M)colorbar()
,但方块仍为红色。事实上,看看我的色条,它从0变为1,尽管使用了集(gca,'CLim',[02])代码>行。为什么您认为它没有效果?您需要在绘图之后(imagesc
)而不是之前设置CLim
。通常-首先创建图形/轴和绘图,然后设置颜色贴图、CLim
、图例等。。。