私のデータセットは3つのベクトル(x、y、z)で構成されています。これらの値を、plot3(x、y、z)を使用した3dプロットのドットとしてプロットします。これは問題ありません。同じプロットに平面を表示したいと思います。このプロットのデータを取得するには、xとyの線形回帰を使用して新しいzを取得します。
これはそれがどのように見えるかです:
(ソース: bildr.no )
サーフを1色(ライトブルーやグレーなど)だけで塗りつぶし、不透明度を設定してシースルーにします。これどうやってするの?
1つの色と特定の透明度値を持つサーフェスを作成する最も簡単な方法は、サーフェスオブジェクトの「FaceColor」プロパティと「FaceAlpha」プロパティを設定することです。
hSurface = surf(...your arguments to create the surface object...);
set(hSurface,'FaceColor',[1 0 0],'FaceAlpha',0.5);
この例では、表面の色を赤に設定し、透明度を0.5に設定します。 Edgeプロパティを設定することもできます(「EdgeColor」および「EdgeAlpha」を使用)。
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);
プロットされたサーフェスのポイントツーポイントエッジを非表示にする
あなたが何をしたいのか私にははっきりしません。あなたがサーフィンのために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)
@ matlabDoug には必要なものが揃っていると思います。プロパティcdata
は、カラーマップを適用するカラーデータを保持します。サーフェスデータと同じサイズの配列に設定し、その配列の各要素の値を同じにすると、サーフェスが1色になります。デフォルトのカラーマップでは、cdataのすべてをゼロに設定すると表面が青になり、すべてを1に設定すると表面が赤になります。次に、アルファを試して透明にします。