我正在使用imshow()
来显示从两个灰度图像的差异中获得的数据。图像被掩盖,即每个像素被放置在'掩码的值为NaN
。数据由parula
色彩映射表示。问题是imshow()
将NaN
视为零,因此屏蔽的像素表示为蓝色。是否有一种简单的方法可以省略屏蔽像素或以不属于色彩图的颜色显示它们(例如白色,灰色或黑色)?
我希望解决方案基于imshow()
,因为最简单的方法是将其包含在我的代码中。但是,使用pcolor
,imagesc
等的解决方案也将受到赞赏。
答案 0 :(得分:8)
您可以将图像对象的AlphaData
设置为等于~isnan(data)
,以使NaN显示为透明值。
R = rand(10);
R(R < 0.25) = NaN;
him = imshow(R, 'InitialMagnification', 10000);
colormap parula
set(him, 'AlphaData', ~isnan(R))
如果您想要特定的颜色,可以打开轴并将轴的颜色设置为您希望NaN
值的颜色。
axis on;
% Make a red axis
set(gca, 'XColor', 'none', 'yColor', 'none', 'xtick', [], 'ytick', [], 'Color', 'r')
如果您使用pcolor
,则NaN
值已被视为透明。