Matlab - 为pcolor中的值设置特定颜色

3
我创建了一个pcolor,其caxis的范围从-3到3。然而,在我的数据中,有很多点的值恰好为1000。我想做的是保持其他所有点的着色相同,但将任何值为1000的点的颜色设置为黑色。有人有任何想法如何做到这一点吗..?
非常感谢, Adam
--编辑--
我目前正在使用pcolor的映射工具m_pcolor创建绘图,如下所示(有关详细信息,请参见此处):
m_proj('Robinson')
h = m_pcolor(Lon', Lat', input_matrix);
m_coast('Color', 'k', 'LineWidth', 1);
set(h,'EdgeColor','none');
2个回答

3
如果要求值为1000的颜色必须为黑色并不是非常严格的要求,您可以通过以下方式将这些值设置为NaN
a(a==1000) = nan; 

函数pcolor将会用白色绘制nan值。

~编辑~
要用黑色显示nan值,你可以将坐标轴的背景改为黑色:

set(gca, 'color', [0 0 0]);
hold on; 
pcolor(a); 

如果您无法更改背景,请尝试以下解决方法:
h1 = pcolor(ones(size(a))); 
hold on; 
set(h1, 'facecolor', [0 0 0]); 
pcolor(a); 

这段代码会绘制两个表面,其中下方的表面设置为黑色。


是的 - 我肯定可以将它们重新分配给nan,但这些点需要是黑色的。有没有办法让pcolor将这些点绘制成黑色而不是白色? - tiswas
很遗憾,似乎不起作用。这也会有问题,因为我正在使用需要显示为白色的透明度掩模。Matlab如何设置nan的颜色?它是将其设置为caxis中可用的最小颜色值吗? - tiswas
对我来说它有效。据我所知,nan值根本不会被绘制,即nan值的位置保持为空白。因此,使用黑色背景的技巧... - H.Muster
编辑:确保在使用pcolor之前设置背景颜色时使用hold on,或在使用pcolor后设置背景颜色。 - H.Muster
查看我的回复给 Mars。将 NaN 保持透明,但将背景改为黑色不起作用,因为我已经在图像的某些部分使用了透明度掩码来显示白色背后的内容。 - tiswas
完成。我省略了如何创建透明度掩码的步骤,因为我认为这并不太相关(除了意味着我们不能在这里使用透明度)。 - tiswas

1
正如H.Muster所写,您可以将值设置为1000以NaN。在这种情况下,轴颜色会透过显示,默认情况下为白色。如果您希望它是黑色的,您可以设置轴对象的“Color”属性:
a=[1 2 4; 3 NaN 5; 6 7 8];
pcolor(a);
set(gca, 'Color', 'Black')

我认为这个不起作用的原因是因为我正在使用m_pcolor,这是一个调整过的pcolor,专门用于绘制地图等。然而,这对我来说也不会很好用,因为我已经在图像的其他部分上使用了透明度掩模来显示白色。 - tiswas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接