0

我正在尝试绘制三角形的二维网格。我想根据给定 A的正标量数组为每个三角形着色,每个三角形一个;例如,假设A保持每个三角形的面积,我希望大三角形比小三角形更粉红。我知道该怎么做:

patch('Faces',tri,'Vertices',V,'FaceColor','flat',
            'FaceVertexCData',A,...
            'CDataMapping','scaled');
colormap(pink);

但是,我还有另一个布尔数组B,每个三角形一个布尔值。例如,它标记了哪些三角形是等腰三角形。如果一个三角形被标记为1B我想把它染成黄色。

我认为这可以通过A(B==1)=-1改变 的colormap巧妙设置来实现caxis,但这是最优雅的方式吗?

4

1 回答 1

0

你想跳过一些三角形的着色(用一种颜色着色),还是对这些三角形使用不同的颜色图?

对于 2D 绘图,第一种情况相对简单。您可以将这些三角形中的 A 设置为 NaN,并且 patch 不会绘制它们。此外,更改绘图的背景颜色将有效地以您想要的颜色显示未绘制的三角形

A(B)=NaN;
set(gca,'Color',[1 0 0]); % red

如果要使用不同的颜色或颜色范围,则必须附加颜色图并将 A 中的值设置为相应三角形的值比任何其他三角形的 A“足够大”:

cmap = [colormap; [1 0 0]]; % red
colormap(cmap);
A(B) = max(A)+1;

无需玩轴。

否则,如果您想包含两种不同的色标,则必须使用补丁图的 CData 属性,请参阅此处的一个很好的教程绘制两个图,一个是灰度图,一个是彩色图。

还有这篇文章是关于如何用两个不同的颜色图绘制两个不同的数据集。这是通过附加两个颜色图并确保两个数据集访问最终颜色图的不同部分来完成的。

于 2012-09-14T07:34:09.447 回答