目录
stem函数的功能是绘制离散序列数据。
语法
stem(Y)
stem(X,Y)
stem(___,'filled')
stem(___,LineSpec)
stem(___,Name,Value)
stem(ax,___)
h = stem(___)
说明
stem(Y) 将数据序列 Y 绘制为从沿 x 轴的基线延伸的针状图。各个数据值由终止每个针状图的圆指示。
-
如果 Y 是向量,x 轴的刻度范围是从 1 至 length(Y)。
-
如果 Y 是矩阵,则 stem 将根据相同的 x 值绘制行中的所有元素,并且 x 轴的刻度范围是从 1 至 Y 中的行数。
stem(X,Y) 在 X 指定的值的位置绘制数据序列 Y。X 和 Y 输入必须是大小相同的向量或矩阵。另外,X 可以是行或列向量,Y 必须是包含 length(X) 行的矩阵。
-
如果 X 和 Y 都是向量,则 stem 将根据 X 中的对应项绘制 Y 中的各项。
-
如果 X 是向量,Y 是矩阵,则 stem 将根据 X 指定的值集绘制 Y 的每列,这样 Y 的一行中的所有元素都是根据相同的值而绘制。
-
如果 X 和 Y 都是矩阵,则 stem 将根据 X 的对应列绘制 Y 的列。
表数据
stem(tbl,yvar) 绘制表中的指定变量对表的行索引的图。如果该表是时间表,则绘制指定变量对时间表的行时间的图。要绘制一组 y 值,请为 yvar 指定变量。要绘制多组 y 值,请为 yvar 指定多个变量。(从 R2022b 开始)
stem(tbl,xvar,yvar) 绘制表 tbl 中的变量 xvar 和 yvar。可以为 xvar 和 yvar 指定一个或多个变量。如果两个参数都指定多个变量,它们指定的变量数目必须相同。(自 R2022b 开始提供)
stem(___,'filled') 填充圆。可以将此选项与前面语法中的任何输入参数组合一起使用。
stem(___,LineSpec) 指定线型、标记符号和颜色。
stem(___,Name,Value) 使用一个或多个 Name,Value 对组参数修改针状图。
stem(ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区 (gca) 中。选项 ax 可以位于前面的语法中的任何输入参数组合之前。
h = stem(___) 在 h 中返回由 Stem 对象构成的向量。使用 h 可在创建针状图后对其进行修改。
示例
绘制单数据序列
创建一个包含 −2π 和 2π 之间的 50 个数据值的针状图。
figure
Y = linspace(-2*pi,2*pi,50);
stem(Y)
数据值绘制为从基线开始延伸并在数据值位置终止的针状线条。Y 的长度自动确定每个针状图在 x 轴上的位置。
绘制多个数据序列
使用两列矩阵绘制两个数据序列。
figure
X = linspace(0,2*pi,50)';
Y = [cos(X), 0.5*sin(X)];
stem(Y)
Y 的每列绘制为一个单独的序列,且 Y 的同一行的各项会针对同一 x 值进行绘制。Y 中的行数自动生成每个针状线条在 x 轴上的位置。
在指定的 x 值位置绘制单个数据序列
绘制在 0 和 2π 之间计算的 50 个余弦数据值并为针状图指定 x 值集。
figure
X = linspace(0,2*pi,50)';
Y = cos(X);
stem(X,Y)
第一个向量输入确定每个针状线条在 x 轴上的位置。
在指定的 x 值处绘制多个数据序列
绘制在 0 和 2π 之间计算的 50 个正弦和余弦数据值并为针状图指定 x 值集。
figure
X = linspace(0,2*pi,50)';
Y = [cos(X), 0.5*sin(X)];
stem(X,Y)
向量输入确定这两个数据序列的 x 轴位置。
在唯一的 x 值集合处绘制多个数据序列
绘制根据不同的 x 值集计算的 50 个正弦和余弦数据值。为每个序列指定对应的 x 值集。
figure
x1 = linspace(0,2*pi,50)';
x2 = linspace(pi,3*pi,50)';
X = [x1, x2];
Y = [cos(x1), 0.5*sin(x2)];
stem(X,Y)
绘制 X
的每一列对 Y
的对应列的图。
填充图标记
创建一个针状图并填充终止每个针状图的圆。
X = linspace(0,10,20)';
Y = (exp(0.25*X));
stem(X,Y,'filled')
指定针状线条和标记选项
创建一个针状图并使用 LineSpec 选项将线型设置为点线,将标记符号设置为菱形,将颜色设置为红色。
figure
X = linspace(0,2*pi,50)';
Y = (exp(X).*sin(X));
stem(X,Y,':diamondr')
要对菱形内部着色,请使用 'fill' 选项。
指定其他针状线条和标记选项
创建一个针状图,并使用 Name,Value 对组参数将线型设置为点划线,将标记面颜色设置为红色,以及将标记边颜色设置为绿色。
figure
X = linspace(0,2*pi,25)';
Y = (cos(2*X));
stem(X,Y,'LineStyle','-.',...
'MarkerFaceColor','red',...
'MarkerEdgeColor','green')
针状图仍保持默认颜色。
绘制表中的数据
自 R2022b 开始提供
基于表数据绘图的一种便捷方法是将表传递给 stem 函数,并指定要绘制的变量。
读取 weather.csv 的前 100 行和前 7 列数据作为一个时间表 tbl。然后显示该表的前三行。
tbl = readtimetable("weather.csv","Range",[1 1 101 7]);
head(tbl,3)
Time WindDirection WindSpeed Humidity Temperature RainInchesPerMinute CumulativeRainfall
____________________ _____________ _________ ________ ___________ ___________________ __________________
25-Oct-2021 00:00:09 46 1 84 49.2 0 0
25-Oct-2021 00:01:09 45 1.6 84 49.2 0 0
25-Oct-2021 00:02:09 36 2.2 84 49.2 0 0
在 x 轴上绘制行时间,在 y 轴上绘制 CumulativeRainfall 变量。在绘制来自时间表的数据时,默认情况下,行时间绘制在 x 轴上。因此,不需要指定 Time 变量。以 h 形式返回 Stem 对象。请注意,轴标签与变量名称匹配。
h = stem(tbl,"CumulativeRainfall");
如图所示:
通过设置 Color 属性,将绘图的颜色更改为紫色。
h.Color = [0.5 0 0.8];
如图所示:
在一个轴上绘制多个表变量
自 R2022b 开始提供
创建向量 x、y1 和 y2,并使用它们创建一个表。绘制 y1 和 y2 变量对 x 变量的图,并使用 axis padded 命令以使针状图不与图框重叠。然后添加图例,注意图例标签与表变量名称匹配。
x = (0:0.1:2.9)';
y1 = cos(x);
y2 = sin(x);
tbl = table(x,y1,y2);
stem(tbl,"x",["y1","y2"]);
% Pad axes and add a legend
axis padded
legend
如图所示:
也可以省略 x 变量,并绘制 y1 和 y2 变量对表的行索引的图。
stem(tbl,["y1","y2"]);
axis padded
legend
如图所示:
指定针状图的坐标区
从 R2019b 开始,您可以使用 tiledlayout 和 nexttile 函数显示分块图。调用 tiledlayout 函数以创建一个 2×1 分块图布局。调用 nexttile 函数以创建坐标区对象 ax1 和 ax2。通过将坐标区对象指定为 stem 的第一个参数,在坐标区中创建单独的针状图。
x = 0:25;
y1 = exp(0.1*x);
y2 = -exp(.05*x);
tiledlayout(2,1)
% Top plot
ax1 = nexttile;
stem(ax1,x,y1)
% Bottom plot
ax2 = nexttile;
stem(ax2,x,y2)
创建后修改针状序列
创建一个三维针状图并返回针状序列对象。
X = linspace(0,2);
Y = X.^3;
Z = exp(X).*cos(Y);
h = stem3(X,Y,Z,'filled');
将颜色更改为品红色,将标记面颜色设置为黄色。使用 view 可调整图窗中坐标区的角度。使用圆点表示法设置属性。
h.Color = 'm';
h.MarkerFaceColor = 'y';
view(-10,35)
调整基线属性
创建一个针状图并更改基线的属性。
X = linspace(0,2*pi,50);
Y = exp(0.3*X).*sin(3*X);
h = stem(X,Y);
更改基线的线型。使用圆点表示法设置属性。
hbase = h.BaseLine;
hbase.LineStyle = '--';
将基线的 Visible 属性设置为 'off' 以隐藏基线。
hbase.Visible = 'off';
更改基线级别
创建一个针状图并将基线级别设置为 2。
X = linspace(0,2*pi,50)';
Y = (exp(0.3*X).*sin(3*X));
stem(X,Y,'BaseValue',2);
线型 | 说明 | 表示的线条 |
---|---|---|
'-' | 实线 | |
'--' | 虚线 | |
':' | 点线 | |
'-.' | 点划线 | |
标记 | 说明 | 生成的标记 |
---|---|---|
'o' | 圆圈 | |
'+' | 加号 | |
'*' | 星号 | |
'.' | 点 | |
'x' | 叉号 | |
'_' | 水平线条 | |
'|' | 垂直线条 | |
's' | 方形 | |
'd' | 菱形 | |
'^' | 上三角 | |
'v' | 下三角 | |
'>' | 右三角 | |
'<' | 左三角 | |
'p' | 五角形 | |
'h' | 六角形 | |
颜色名称 | 短名称 | RGB 三元组 | 外观 |
---|---|---|---|
'red' | 'r' | [1 0 0] | |
'green' | 'g' | [0 1 0] | |
'blue' | 'b' | [0 0 1] | |
'cyan' | 'c' | [0 1 1] | |
'magenta' | 'm' | [1 0 1] | |
'yellow' | 'y' | [1 1 0] | |
'black' | 'k' | [0 0 0] | |
'white' | 'w' | [1 1 1] | |