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,'off') のように、scale'off' または 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

Figure contains an axes object. The axes object contains an object of type quiver.

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

たとえば、まず、10×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 contains an axes object. The axes object contains an object of type quiver.

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

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

Figure contains an axes object. The axes object contains an object of type quiver.

関数 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

Figure contains an axes object. The axes object contains 2 objects of type quiver, surface.

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

Figure contains an axes object. The axes object contains an object of type quiver.

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')

Figure contains 2 axes objects. Axes object 1 with title Left Plot contains an object of type quiver. Axes object 2 with title Right Plot contains an object of type quiver.

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 = '.';

Figure contains an axes object. The axes object contains an object of type quiver.

入力引数

すべて折りたたむ

矢印の起点の 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' は丸いマーカーをもった赤い破線

ライン スタイル説明結果として得られる線
"-"実線

Sample of solid line

"--"破線

Sample of dashed line

":"点線

Sample of dotted line

"-."一点鎖線

Sample of dash-dotted line, with alternating dashes and dots

マーカー説明結果のマーカー
"o"

Sample of circle marker

"+"プラス記号

Sample of plus sign marker

"*"アスタリスク

Sample of asterisk marker

"."

Sample of point marker

"x"十字

Sample of cross marker

"_"水平線

Sample of horizontal line marker

"|"垂直線

Sample of vertical line marker

"square"正方形

Sample of square marker

"diamond"菱形

Sample of diamond marker

"^"上向き三角形

Sample of upward-pointing triangle marker

"v"下向き三角形

Sample of downward-pointing triangle marker

">"右向き三角形

Sample of right-pointing triangle marker

"<"左向き三角形

Sample of left-pointing triangle marker

"pentagram"星形五角形

Sample of pentagram marker

"hexagram"星形六角形

Sample of hexagram marker

色名省略名RGB 3 成分外観
"red""r"[1 0 0]

Sample of the color red

"green""g"[0 1 0]

Sample of the color green

"blue""b"[0 0 1]

Sample of the color blue

"cyan" "c"[0 1 1]

Sample of the color cyan

"magenta""m"[1 0 1]

Sample of the color magenta

"yellow""y"[1 1 0]

Sample of the color yellow

"black""k"[0 0 0]

Sample of the color black

"white""w"[1 1 1]

Sample of the color white

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

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

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

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

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: '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 より前に導入