我想绘制一个二维网格的三角形。我想根据给定的正数标量的数组A
为每个三角形着色,每个三角形使用一个;例如,假设A
包含每个三角形的面积,并且我希望大三角形比较小的三角形更粉红。我知道如何做到这一点:颜色三角形有一些例外
patch('Faces',tri,'Vertices',V,'FaceColor','flat',
'FaceVertexCData',A,...
'CDataMapping','scaled');
colormap(pink);
不过,我也有另外一个布尔数组B
,每个三角形一个布尔值。例如,它标记哪个三角形是等腰三角形。 如果一个三角形在B
中标记为1
,我想为它着黄色。
我认为这可以通过类似A(B==1)=-1
,更改colormap
和巧妙设置caxis
来实现,但这是最优雅的方式吗?
如果'A = [1 2 3 10000]'那么我不认为这个技巧会起作用。你建议'A(B)= 10001',但是'10001'和'10000'会映射到相同的颜色 – olamundo
@noam当然,这个例子是在[0,1]范围内的A。如果确保A(B)设置为“足够大”的值,该怎么办? – angainor
当然可以这样做,但这些正是我希望避免的那种技巧。 为了完整起见,“足够大”本身并不够好,如果你采取'A = [1 2 3]'和'足够大'的加法,A(B)= 100000 ',那么现在'1','2','3'映射到相同的颜色。找到正确的值并不难,但我希望尽可能避免。 – olamundo