Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

quiver3

3 次元 Quiver プロットまたはベクトル プロット

  • 3-D Cartesian grid with plotted arrows

説明

quiver3(X,Y,Z,U,V,W) は、XY、および Z で指定された直交座標に、方向成分 UV、および W をもつ矢印をプロットします。たとえば、最初の矢印は点 X(1)Y(1)、および Z(1) を起点とし、x 軸方向に U(1) に従って伸び、y 軸方向に V(1) に従って伸び、z 軸方向に W(1) に従って伸びます。既定では、関数 quiver3 は、矢印が重なり合わないように矢印の長さをスケーリングします。

quiver3(Z,U,V,W) は、UV、および W で指定された方向成分をもつ矢印を、表面 Z に沿った等間隔の点にプロットします。

  • Z がベクトルの場合、矢印の x 座標の範囲は 1 から Z の要素数までとなり、y 座標はすべて 1 になります。

  • Z が行列の場合、矢印の x 座標の範囲は 1 から Z の列数までとなり、y 座標の範囲は 1 から Z の行数までとなります。

quiver3(___,scale) は、次のように矢印の長さを調整します。

  • scale が正の数値のとき、関数 quiver3 は、矢印が重なり合わないように矢印の長さを自動的に調整してから、係数 scale で長さを伸ばします。たとえば、scale が 2 の場合、矢印の長さは 2 倍になり、scale が 0.5 の場合、矢印の長さは半分になります。

  • quiver3(X,Y,Z,U,V,W,0) のように、scale が 0 の場合、自動スケーリングは無効になります。

quiver3(___,LineSpec) は、ライン スタイル、マーカー、および色を設定します。マーカーは、XY、および Z で指定した点に表示されます。LineSpec を使用してマーカーを指定する場合、quiver3 は矢じりを表示しません。マーカーを指定し、かつ矢じりを表示するには、代わりに Marker プロパティを設定します。

quiver3(___,LineSpec,'filled') は、LineSpec で指定したマーカーを塗りつぶします。

quiver3(___,Name,Value) は、1 つ以上の名前と値のペアの引数を使用して、矢印のプロパティを指定します。プロパティの一覧については、Quiver のプロパティ を参照してください。名前と値のペアの引数は、その他すべての入力引数の後に指定します。名前と値のペアの引数は、その矢印プロット内のすべての矢印に適用されます。

quiver3(ax,___) は、現在の座標軸 (gca) ではなく、ax で指定された座標軸に矢印プロットを作成します。ax 引数は、前述の構文における任意の入力引数の組み合わせの前で指定できます。

q = quiver3(___)Quiver オブジェクトを返します。このオブジェクトは、矢印プロットを作成後に、矢印プロットのプロパティを制御するのに便利です。

すべて折りたたむ

北アメリカの大気の流れを表すサンプル データを読み込みます。この例では、データのサブセットを選択します。

load wind
X = x(5:10,20:25,6:10);
Y = y(5:10,20:25,6:10);
Z = z(5:10,20:25,6:10);
U = u(5:10,20:25,6:10);
V = v(5:10,20:25,6:10);
W = w(5:10,20:25,6:10);

選択したサブセットの 3 次元 Quiver プロットを作成します。ベクトル XY、および Z は各矢印の起点の位置を表し、UV、および W は各矢印の方向成分を表します。既定では、関数 quiver3 は、矢印が重なり合わないよう矢印の長さを短くします。axis equal を呼び出し、各軸で等しい長さのデータ単位を使用します。これにより、矢印が正しい方向を指すようになります。

quiver3(X,Y,Z,U,V,W)
axis equal

既定では、関数 quiver3 は、矢印が重なり合わないよう矢印の長さを短くします。自動スケーリングを無効にして、矢印の長さが UVW のみによって決まるようにするには、scale 引数を 0 に設定します。

たとえば、まず、10 x 10 の面をもつ単位球面の xyz 座標を返します。関数 surfnorm を使用して、その面法線の方向成分を計算します。次に、自動スケーリングなしで、3 次元 Quiver プロットを作成します。

[X,Y,Z] = sphere(10);
[U,V,W] = surfnorm(X,Y,Z);
quiver3(X,Y,Z,U,V,W,0)
axis equal

比較のために、自動スケーリングありのプロットを作成します。矢印が短くなり、重なり合わなくなることがわかります。

figure
quiver3(X,Y,Z,U,V,W)
axis equal

関数 z=xe-x2-y2 で定義される表面に対して垂直なベクトルをプロットします。関数 quiver3 を使用してベクトルをプロットし、関数 surf を使用して表面をプロットします。

まず、等間隔の x 値と y 値のグリッドを作成します。それらを使用して z を計算します。次に、法線ベクトルを求めます。

[X,Y] = meshgrid(-2:0.25:2,-1:0.2:1);
Z = X.*exp(-X.^2 - Y.^2);
[U,V,W] = surfnorm(X,Y,Z);

そのベクトルを 3 次元 Quiver プロットとして表示します。次に、同じ座標軸上に表面を表示します。axis equal を呼び出して、ベクトルが表面に対して垂直に表示されるように表示を調整します。

quiver3(X,Y,Z,U,V,W)
hold on
surf(X,Y,Z)
axis equal

3 次元 Quiver プロットを作成し、矢印に色を指定します。

たとえば、まず、表面の xy、および z 座標を返します。関数 surfnorm を使用して、その面法線の方向成分を計算します。

[X,Y] = meshgrid(-pi/2:pi/8:pi/2,-pi/2:pi/8:pi/2);
Z = sin(X) + cos(Y);
[U,V,W] = surfnorm(Z);

次に、赤い矢印をもつ 3 次元 Quiver プロットを作成します。

quiver3(X,Y,Z,U,V,W,'r')
axis equal

R2019b 以降、関数 tiledlayout および nexttile を使用して、プロットをタイル表示できます。関数 tiledlayout を呼び出して、1 行 2 列のタイル表示チャート レイアウトを作成します。関数 nexttile を呼び出して axes オブジェクトを作成し、オブジェクトを ax1 として返します。ax1 を関数 quiver3 に渡し、左のプロットを作成します。座標軸を関数 title に渡し、プロットにタイトルを追加します。このプロセスを繰り返して右のプロットを作成します。

[X,Y] = meshgrid(-2:0.25:0,-2:0.25:0);
Z1 = -0.5*(X.^2 + Y.^2);
[U1,V1,W1] = surfnorm(Z1);
Z2 = -X.*Y;
[U2,V2,W2] = surfnorm(Z2);

tiledlayout(1,2)

% Left plot
ax1 = nexttile;
quiver3(ax1,X,Y,Z1,U1,V1,W1)
axis equal
title(ax1,'Left Plot')

% Right plot
ax2 = nexttile;
quiver3(ax2,X,Y,Z2,U2,V2,W2)
axis equal
title(ax2,'Right Plot')

3 次元 Quiver プロットを作成し、quiver オブジェクトを返します。次に、矢じりを削除し、各矢印の起点にドット マーカーを追加します。

[X,Y] = meshgrid(-3:0.5:3,-3:0.5:3);
Z = 0.2*(Y.^2 - X.^2);
[U,V,W] = surfnorm(Z);

q = quiver3(X,Y,Z,U,V,W);
axis equal
q.ShowArrowHead = 'off';
q.Marker = '.';

入力引数

すべて折りたたむ

矢印の起点の x 座標。スカラー、ベクトル、または行列として指定します。

XY がベクトルで、ZUV、および W が行列の場合、quiver3XY を行列に拡張します。この場合、size(Z)size(U)size(V)、および size(W)[length(Y) length(X)] に等しくなければなりません。ベクトルの行列への拡張の詳細については、meshgrid を参照してください。

XY が行列の場合、XYZUV、および W は同じサイズでなければなりません。

矢印の起点の y 座標。スカラー、ベクトル、または行列として指定します。

XY がベクトルで、ZUV、および W が行列の場合、quiver3XY を行列に拡張します。この場合、size(Z)size(U)size(V)、および size(W)[length(Y) length(X)] に等しくなければなりません。ベクトルの行列への拡張の詳細については、meshgrid を参照してください。

XY が行列の場合、XYZUV、および W は同じサイズでなければなりません。

矢印の起点の z 座標。スカラー、ベクトル、または行列として指定します。

XY がベクトルで、Z が行列の場合、size(Z)[length(Y) length(X)] に等しくなければなりません。

XY が行列の場合、XYZUV、および W は同じサイズでなければなりません。

矢印の x 成分。スカラー、ベクトル、または行列として指定します。

XY がベクトルで、U が行列の場合、size(U)[length(Y) length(X)] に等しくなければなりません。

XY が行列の場合、XYZUV、および W は同じサイズでなければなりません。

矢印の y 成分。スカラー、ベクトル、または行列として指定します。

XY がベクトルで、V が行列の場合、size(V)[length(Y) length(X)] に等しくなければなりません。

XY が行列の場合、XYZUV、および W は同じサイズでなければなりません。

矢印の z 成分。スカラー、ベクトル、または行列として指定します。

XY がベクトルで、W が行列の場合、size(W)[length(Y) length(X)] に等しくなければなりません。

XY が行列の場合、XYZUV、および W は同じサイズでなければなりません。

ライン スタイル、マーカーおよび色。記号を含む文字ベクトルまたは string として指定します。記号の順番は任意です。3 つの特性 (ライン スタイル、マーカーおよび色) をすべて指定する必要はありません。

LineSpec を使用してマーカーを指定する場合、quiver3 は矢じりを表示しません。マーカーを指定し、かつ矢じりを表示するには、代わりに Marker プロパティを設定します。

例: '--or' は丸いマーカーをもった赤い破線

ライン スタイル説明
-実線
--破線
:点線
-.一点鎖線
マーカー説明
'o'
'+'プラス記号
'*'アスタリスク
'.'
'x'十字
'_'水平線
'|'垂直線
's'正方形
'd'菱形
'^'上向き三角形
'v'下向き三角形
'>'右向き三角形
'<'左向き三角形
'p'星形五角形
'h'星形六角形
説明

y

m

マゼンタ

c

シアン

r

g

b

w

k

矢印のスケーリング係数。正の数値として指定します。既定では、関数 quiver3 は、矢印が重なり合わないように矢印を自動的にスケーリングします。関数 quiver3 は、矢印を自動的にスケーリングした後に、スケーリング係数を適用します。

scale を指定することは、quiver オブジェクトの AutoScaleFactor プロパティを設定することと同じです。たとえば、scale2 に指定すると、矢印の長さが 2 倍になります。scale0.5 に指定すると、矢印の長さが半分になります。

自動スケーリングを無効にするには、scale を 0 に指定します。scale を 0 に指定すると、quiver オブジェクトの AutoScale プロパティが 'off' に設定され、矢印の長さが UV、および W のみによって決まるようになります。

ターゲット座標軸。Axes オブジェクトとして指定します。座標軸を指定しない場合、関数 quiver3 は現在の座標軸を使用します。

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: 'Color','r','LineWidth','1

メモ

ここでは、プロパティの一部だけを紹介しています。完全な一覧については、Quiver のプロパティ を参照してください。

矢印の軸と矢じりの幅。ポイント単位の 0 より大きいスカラー数値として指定します。1 ポイントは 1/72 インチです。既定値は 0.5 ポイントです。

例: 0.75

矢じりの表示。'on' または 'off' もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • 'on' — ベクトルを矢じり付きで表示します。

  • 'off' — ベクトルを矢じりなしで表示します。

矢印の長さの自動スケーリング。'on' または 'off' もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • 'on' — グリッドで定義された座標データ内に収まるように矢印の長さをスケーリングし、矢印が重なり合わないようにします。関数 quiver または quiver3 は、その後にその矢印の長さに対して AutoScaleFactor を適用します。

  • 'off' — 矢印の長さをスケーリングしません。

スケール係数。スカラーとして指定します。値が 2 の場合は矢印の長さが 2 倍になり、値が 0.5 の場合は矢印の長さが半分になります。

このプロパティは AutoScale'on' に設定されている場合のみ有効です。

例: 2

ヒント

円柱座標または球面座標を使用して 3 次元 Quiver プロットを作成するには、先に、関数 pol2cart または sph2cart を使用して直交座標に変換します。

拡張機能

R2006a より前に導入