3

本当に2つの質問ですが、重複しているように感じますので、1か所で質問します(よろしければ)。

私は以下を使用してmatlabでpcolorを作成しました:

p = pcolor(Lon', Lat', data);

しかし、今、私はいくつかの情報を追加したいと思います。データと同じ次元の行列maskがありますが、1と0が入力されています。1が含まれている場合は、pcolorのピクセルを保持し、0が含まれている場合は、削除します(値をゼロに変更するだけでなく、カラーマップでは白いピクセルで表されません)。

次に、「stipple」と呼ばれる2番目のマトリックスがあります。これも0と1を含みます。ここで、1で表される任意の場所を点刻効果でオーバーレイしたいと思います。

これの目的は、次のような画像を作成することです 。http ://www.ipcc.ch/publications_and_data/ar4/wg1/en/figure-spm-7.html 平均が描かれているが、あまりにも多くの不一致が白く塗りつぶされ、多くの一致がある領域は「点刻」されます。

前もって感謝します!

4

1 に答える 1

4

私が取るアプローチは、透明性のためにマスクを使用することです。pcolorプロットを作成するときにプロパティを直接設定できないため、これは少し複雑ですが、ハンドルをつかんでそのように行うことができます。

点刻をオーバーレイするにhold onは、pcolorプロットが消えないようにし、「plot」を使用して目的の場所にポイントをプロットします。

Lon = (-179:1:180)'; %# comment for formatting'
Lat = -90:1:90;
data = randn(length(Lon),length(Lat)); #% generate random data
mask = randi(2,size(data))-1; #% generate a random mask (zeros and ones)
point_matrix = randi(4,size(data)-1)==4; #% random (logical) matrix
[r c]=find(point_matrix==1); %# get the coordinates of the ones
figure;
hold on;
#% save a handle to the surface object created by pcolor
h=pcolor(repmat(Lon ,1,length(Lat)),repmat(Lat,length(Lon),1),data);
#% set properties of that surface: use mask as alphadata for transparency
#% and set 'facealpha' property to 'flat', and turn off edges (optional)
set(h,'alphadata',mask,'facealpha','flat','edgecolor','none');
#% overlay black dots on the center of the randomly chosen tiles
plot(r-179.5,c-89.5,'.k')
于 2012-05-09T15:28:48.200 に答える