我正在尝试绘制三角形的2D网格。我想根据给定的正标量数组A
为每个三角形着色,每个三角形一个;例如,假设A
保持每个三角形的面积,我希望大三角形比较小三角形更粉红。我知道怎么做:
patch('Faces',tri,'Vertices',V,'FaceColor','flat',
'FaceVertexCData',A,...
'CDataMapping','scaled');
colormap(pink);
但是,我还有另一个布尔数组B
,每个三角形一个布尔值。例如,它标记哪个三角形是等腰三角形。
如果在1
中将三角形标记为B
,我想将其涂成黄色。
我认为这可以通过类似A(B==1)=-1
,更改colormap
和caxis
的聪明设置来实现,但这是最优雅的方式吗?
答案 0 :(得分:0)
是否要跳过某些三角形的着色(用一种颜色着色),或者为这些三角形使用不同的颜色图?
对于2D绘图,第一种情况相对简单。您可以将这些三角形中的A设置为NaN,并且补丁不会绘制它们。此外,更改绘图的背景颜色将有效地显示所需颜色的未绘制三角形
A(B)=NaN;
set(gca,'Color',[1 0 0]); % red
如果要使用不同的颜色或颜色范围,则必须附加颜色贴图并将A中的值设置为对于任何其他三角形而言,“A”足够“A”:
cmap = [colormap; [1 0 0]]; % red
colormap(cmap);
A(B) = max(A)+1;
无需使用轴。
否则,如果你想要包含两个不同的色阶,你必须使用补丁图的CData属性,看一个好的教程here来绘制两个图,一个是灰度的,一个是彩色的。同样的数字。
还有关于如何使用两种不同的色彩图绘制两个不同数据集的this帖子。这是通过附加两个颜色图并确保两个数据集访问最终颜色图的不同部分来完成的。