Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

quiver

矢印プロットまたはベクトル プロット

  • Cartesian grid with plotted arrows

説明

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

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

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

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

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

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

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

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

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

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

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

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

すべて折りたたむ

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

load('wind','x','y','u','v')
X = x(11:22,11:22,1);
Y = y(11:22,11:22,1);
U = u(11:22,11:22,1);
V = v(11:22,11:22,1);

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

quiver(X,Y,U,V)
axis equal

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

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

たとえば、関数 meshgrid を使用して、X 値と Y 値のグリッドを作成します。これらの値を使用して、方向成分を指定します。次に、自動スケーリングなしで、矢印プロットを作成します。

[X,Y] = meshgrid(0:6,0:6);
U = 0.25*X;
V = 0.5*Y;
quiver(X,Y,U,V,0)

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

関数 z=xe-x2-y2 の勾配と等高線をプロットします。関数 quiver を使用して勾配をプロットし、関数 contour を使用して等高線をプロットします。

まず、等間隔の x 値と y 値のグリッドを作成します。それらを使用して z を計算します。次に、点の間隔を指定することによって、z の勾配を特定します。

spacing = 0.2;
[X,Y] = meshgrid(-2:spacing:2);
Z = X.*exp(-X.^2 - Y.^2);
[DX,DY] = gradient(Z,spacing);

勾配ベクトルを矢印プロットとして表示します。次に、同じ座標軸上に等高線を表示します。axis equal を呼び出して、勾配ベクトルが等高線に対して垂直に表示されるよう表示を調整します。

quiver(X,Y,DX,DY)
hold on
contour(X,Y,Z)
axis equal
hold off

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

矢印プロットを作成し、矢印の色を指定します。

[X,Y] = meshgrid(-pi:pi/8:pi,-pi:pi/8:pi);
U = sin(Y);
V = cos(X);
quiver(X,Y,U,V,'r')

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

X 値と Y 値のグリッドを作成してから、方向成分 U および V を 2 組作成します。

[X,Y] = meshgrid(0:pi/8:pi,-pi:pi/8:pi);
U1 = sin(X);
V1 = cos(Y);
U2 = sin(Y);
V2 = cos(X); 

2 つの座標軸 ax1ax2 をもつプロットのタイル レイアウトを作成します。各座標軸に矢印プロットとタイトルを追加します "(R2019b より前では、tiledlayout および nexttile の代わりにsubplotを使用してください)。"

tiledlayout(1,2)

ax1 = nexttile;
quiver(ax1,X,Y,U1,V1)
axis equal
title(ax1,'Left Plot')

ax2 = nexttile;
quiver(ax2,X,Y,U2,V2)
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.

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

[X,Y] = meshgrid(-pi:pi/8:pi,-pi:pi/8:pi);
U = sin(Y);
V = cos(X);

q = quiver(X,Y,U,V);
q.ShowArrowHead = 'off';
q.Marker = '.';

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

入力引数

すべて折りたたむ

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

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

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

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

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

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

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

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

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

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

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

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

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

LineSpec を使用してマーカーを指定する場合、quiver は矢じりを表示しません。マーカーを指定し、かつ矢じりを表示するには、代わりに 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' として指定します。既定では、関数 quiver は、矢印が重なり合わないように矢印を自動的にスケーリングします。関数 quiver は、矢印を自動的にスケーリングした後に、スケーリング係数を適用します。

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

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

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

名前と値の引数

引数のオプションのペアを 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

ヒント

極座標を使用して矢印プロットを作成するには、先に、関数 pol2cart を使用して直交座標に変換します。

拡張機能

バージョン履歴

R2006a より前に導入

参考

関数

プロパティ