0

三角形の2Dメッシュを描画しようとしています。A三角形ごとに1つずつ、正のスカラーの特定の配列に従って各三角形に色を付けたいと思い ます。たとえばA、各三角形の面積を保持していると仮定し、大きな三角形を小さな三角形よりもピンク色にしたいとします。私はこれを行う方法を知っています:

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

ただし、別のブール配列もありますB。三角形ごとに1つのブール配列です。たとえば、どの三角形が二等辺三角形であるかを示します。三角形がのようにマークされている場合は、1黄色Bに着色したいと思います。

これは、の巧妙な設定をA(B==1)=-1変更するなどの方法で実現できると思いますが、これが最もエレガントな方法ですか?colormapcaxis

4

1 に答える 1

0

一部の三角形の色付けをスキップしますか(1つの色で色付けします)、またはそれらの三角形に別のカラーマップを使用しますか?

最初のケースは、2Dプロットの場合は比較的単純です。これらの三角形のAをNaNに設定すると、パッチはそれらを描画しません。さらに、プロットの背景色を変更すると、描画されていない三角形が希望の色で効果的に表示されます。

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;

軸で遊ぶ必要はありません。

それ以外の場合、2つの異なるカラースケールを含める場合は、パッチプロットのCDataプロパティを試してみる必要があります。同じ図にグレースケールとカラーの2つのプロットを描画するための優れたチュートリアルを参照してください。

2つの異なるカラーマップを使用して2つの異なるデータセットをプロットする方法についてのこの投稿もあります。これは、2つのカラーマップを追加し、2つのデータセットが最終的なカラーマップの異なる部分にアクセスすることを確認することによって行われます。

于 2012-09-14T07:34:09.447 に答える