Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

quiver

箭头图或向量图

  • Cartesian grid with plotted arrows

说明

示例

quiver(X,Y,U,V) 在由 XY 指定的笛卡尔坐标上绘制具有定向分量 UV 的箭头。例如,第一个箭头源于点 X(1)Y(1),按 U(1) 水平延伸,按 V(1) 垂直延伸。默认情况下,quiver 函数缩放箭头长度,使其不重叠。

quiver(U,V) 在等距点上绘制箭头,箭头的定向分量由 UV 指定。

  • 如果 UV 是向量,则箭头的 x 坐标范围是从 1 到 UV 中的元素数,并且 y 坐标均为 1。

  • 如果 UV 是矩阵,则箭头的 x 坐标范围是从 1 到 UV 中的列数,箭头的 y 坐标范围是从 1 到 UV 中的行数。

示例

quiver(___,scale) 调整箭头的长度:

  • scale 为正数时,quiver 函数会自动调整箭头的长度,使其不重叠,然后将箭头长度拉伸 scale 倍。例如,scale 为 2 会使箭头长度加倍,scale 为 0.5 会使箭头长度减半。

  • scale 为 0 时,如 quiver(X,Y,U,V,0),则禁用自动缩放。

示例

quiver(___,LineSpec) 设置线型、标记和颜色。标记出现在由 XY 指定的点上。如果使用 LineSpec 指定标记,则 quiver 不显示箭尖。要指定标记并显示箭尖,请改为设置 Marker 属性。

quiver(___,LineSpec,'filled') 填充由 LineSpec 指定的标记。

quiver(___,Name,Value) 使用一个或多个名称-值对组参数指定箭头图属性。有关属性列表,请参阅 Quiver 属性。在所有其他输入参数之后指定名称-值对组参数。名称-值对组参数应用于箭头图中的所有箭头。

示例

quiver(ax,___)ax 指定的坐标区中而不是当前坐标区 (gca) 中创建箭头图。参数 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

默认情况下,quiver 函数会缩短箭头长度,使其不重叠。将 scale 参数设置为 0 可禁用自动缩放,从而完全由 UV 来确定箭头长度。

例如,使用 meshgrid 函数创建一个由 XY 值组成的网格。使用这些值指定定向分量。然后,创建一个没有自动缩放的箭头图。

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

绘制函数 z=xe-x2-y2 的梯度和等高线。使用 quiver 函数绘制梯度,使用 contour 函数绘制等高线。

首先,创建一个由等间距的 xy 值组成的网格。使用它们来计算 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

创建一个箭头图,并指定箭头的颜色。

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

创建一个由 XY 值以及两组 UV 定向分量组成的网格。

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

创建一个具有两个坐标区 ax1ax2 的分块布局图。想每个坐标区添加一个箭头图和标题。(在 R2019b 之前,使用 subplot 而不是 tiledlayout nexttile。)

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

创建一个箭头图并返回箭头图对象。然后,删除箭尖并在每个箭尖的起始点添加点标记。

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

输入参数

全部折叠

箭头起始点的 x 坐标,指定为标量、向量或矩阵。

如果 XY 是向量,而 UV 是矩阵,则 quiverXY 扩展为矩阵。在这种情况下,size(U)size(V) 必须等于 [length(Y) length(X)]。有关将向量扩展为矩阵的详细信息,请参阅 meshgrid

如果 XY 是矩阵,则 XYUV 的大小必须相同。

箭头起始点的 y 坐标,指定为标量、向量或矩阵。

如果 XY 是向量,而 UV 是矩阵,则 quiverXY 扩展为矩阵。在这种情况下,size(U)size(V) 必须等于 [length(Y) length(X)]。有关将向量扩展为矩阵的详细信息,请参阅 meshgrid

如果 XY 是矩阵,则 XYUV 的大小必须相同。

箭头的 x 分量,指定为标量、向量或矩阵。

如果 XY 是向量,则 size(U)size(V) 必须等于 [length(Y) length(X)]

如果 XY 是矩阵,则 XYUV 的大小必须相同。

箭头的 y 分量,指定为标量、向量或矩阵。

如果 XY 是向量,则 size(U)size(V) 必须等于 [length(Y) length(X)]

如果 XY 是矩阵,则 XYUV 的大小必须相同。

线型、标记和颜色,指定为包含符号的字符向量或字符串。符号可以按任意顺序显示。您不需要同时指定所有三个特征(线型、标记和颜色)。

如果使用 LineSpec 指定标记,则 quiver 不显示箭尖。要指定标记并显示箭尖,请改为设置 Marker 属性。

示例: '--or' 是带有圆形标记的红色虚线

线型说明
-实线
--虚线
:点线
-.点划线
标记说明
'o'圆圈
'+'加号
'*'星号
'.'
'x'叉号
'_'水平线条
'|'垂直线条
's'方形
'd'菱形
'^'上三角
'v'下三角
'>'右三角
'<'左三角
'p'五角形
'h'六角形
颜色说明

y

黄色

m

品红色

c

青蓝色

r

红色

g

绿色

b

蓝色

w

白色

k

黑色

箭头缩放因子,指定为正数。默认情况下,quiver 函数会自动缩放箭头,使其不重叠。quiver 函数在自动缩放箭头后应用缩放因子。

指定 scale 等效于设置箭头图对象的 AutoScaleFactor 属性。例如,将 scale 指定为 2 会使箭头的长度加倍。将 scale 指定为 0.5 会使箭头的长度减半。

要禁用自动缩放,请将 scale 指定为 0。当您将 scale 指定为 0 时,箭头图对象的 AutoScale 属性设置为 'off',箭头的长度完全由 UV 确定。

目标坐标区,指定为 Axes 对象。如果未指定坐标区,则 quiver 函数使用当前坐标区。

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

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

注意

此处所列的属性只是一部分。有关完整列表,请参阅 Quiver 属性

箭杆宽度,指定为大于 0 的数值标量(以磅为单位)。一磅等于 1/72 英寸。默认值为 0.5 磅。

示例: 0.75

箭尖显示,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 'on' - 显示带箭尖的向量。

  • 'off' - 显示不带箭尖的向量。

自动缩放箭头长度,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 'on' - 缩放箭头长度以便可容纳在网格定义的坐标数据和缩放箭头内,这样它们不会发生重叠。然后,quiverquiver3 函数将 AutoScaleFactor 应用于箭头长度。

  • 'off' - 不缩放箭头长度。

缩放因子,指定为标量。值 2 使箭头的长度加倍。值 0.5 使箭头的长度减半。

仅当 AutoScale 属性设置为 'on' 时,此属性才起作用。

示例: 2

提示

要使用极坐标创建箭头图,请首先使用 pol2cart 函数将其转换为笛卡尔坐标。

扩展功能

另请参阅

函数

属性

在 R2006a 之前推出