17

私のデータセットは 3 つのベクトル (x、y、z) で構成されています。これらの値を plot3(x,y,z) を使用して 3D プロットにドットとしてプロットしますが、これで問題ありません。同じプロットに平面も表示したいと思います。このプロットのデータを取得するには、x と y で線形回帰を使用して新しい z を取得します。

これはどのように見えるかです:

代替テキスト
(出典: bildr.no )

サーフを 1 色 (水色またはグレーなど) だけで塗りつぶし、不透明度を設定して、透けて見えるようにします。これどうやってするの?

4

4 に答える 4

26

色が 1 つだけで透明度が指定されたサーフェスを作成する最も簡単な方法は、サーフェス オブジェクトの 'FaceColor' プロパティと 'FaceAlpha' プロパティを設定することです。

hSurface = surf(...your arguments to create the surface object...);
set(hSurface,'FaceColor',[1 0 0],'FaceAlpha',0.5);

この例では、表面の色を赤に、透明度を 0.5 に設定します。エッジ プロパティも設定できます ('EdgeColor' および 'EdgeAlpha' を使用)。

于 2009-01-29T16:40:50.157 に答える
4

あなたが何をしたいのか私にはわかりません。サーフィンの色を1つと言うとき、それは正確に1つの色を意味しますか、それともグレーの色合いが必要ですか?

さまざまなことを行うコードを次に示します。使用する行を選択できます。

x = rand(1,20);
y = rand(1,20);
z = rand(1,20);

[X,Y] = meshgrid(linspace(0,1,10),linspace(0,1,10));
Z = rand(10)*0.1;

clf
plot3(x,y,z,'.');
hold on
h = surf(X,Y,Z)
hold off

%% This will change the color
colormap(copper)
%% This will remove colordata
set(h, 'cdata',zeros(10))
%% This will make transparent
alpha(0.5)
于 2009-01-29T18:52:13.183 に答える
4

gnovice からの回答を完了するには、追加の成分set(hsurface...)が必要になる場合があります (Matlab R2010b 64):

hSurface = surf(...your arguments to create the surface object...);
set(hSurface, 'FaceColor',[1 0 0], 'FaceAlpha',0.5, 'EdgeAlpha', 0);

プロットされたサーフェスのポイント ツー ポイント エッジを非表示にします

于 2012-09-15T10:59:18.640 に答える
1

@matlabDougには必要ものがあると思います。プロパティcdataは、カラーマップを適用するカラーデータを保持します。サーフェスデータと同じサイズの配列に設定し、その配列の各要素の値を同じにすると、サーフェスが1色になります。デフォルトのカラーマップでは、cdataのすべてをゼロに設定すると表面が青になり、すべてを1に設定すると表面が赤になります。次に、アルファを操作して透明にすることができます。

于 2009-01-29T19:02:54.877 に答える