分享

matlab同一轴上绘制多个图形(三种方法)

 小温爱怡宝 2023-07-22 发布于江西

9.1.2 同一轴上的多个图(三种方法)

至少有三种方法可以在同一组坐标轴上绘制多个图形 (但是,如果新数据超出先前数据的范围,则可能会重新缩放)。

  1. 最简单的方法是使用hold来保持当前图形在坐标轴上。所有随后的绘图都会添加到坐标轴上,直到使用hold off或者hold(切换保持状态)释放hold。这意味着可以连续绘制多个图形而无需清除坐标轴上的先前图形。 在 MATLAB 中,可以使用 hold on 和 hold off 命令来在同一轴线上绘制多个图形。

首先,使用 plot 函数绘制第一个图形。然后,使用 hold on 命令来保持当前的图形,并继续在同一轴线上绘制其他图形。在绘制完所有图形后,使用 hold off 命令来取消 hold on 状态,以便在下一次绘图时重新创建新的轴线。

以下是一个示例代码:

x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);

plot(x, y1)
hold on
plot(x, y2)
hold off

在这个示例中,首先使用 plot 函数绘制了 sin(x) 的图形,然后使用 hold on 命令保持当前的图形状态。接着,使用 plot 函数绘制了 cos(x)的图形。最后,使用 hold off 命令取消 hold on 状态。这样就在同一轴线上绘制了两个图形。你可以根据需要绘制更多的图形,只需要在 hold on 和 hold off 之间使用多个 plot 函数即可。

注意,如果你希望在同一轴线上绘制的图形具有不同的样式,例如不同的颜色、线型或标记,可以在每个 plot 函数中传入额外的参数来自定义图形的样式。

  1. 第二种方法是使用带有多个参数的plot,例如:plot(x1, y1, x2, y2, x3, y3, ... ),绘制(向量)对 (x1, y1)(x2, y2)等。这种方法的优点是向量对可以有不同的长度。MATLAB会自动为每一对选择不同的颜色。

当你希望在同一张图上绘制多条曲线时,可以使用带有多个参数的 plot 函数。每对参数 (x, y) 对应一条曲线。

在下面这个示例中,我们使用了三对参数 x 和 y,分别表示三个图形的横坐标和纵坐标。plot 函数会根据传入的参数对依次绘制图形。注意,每对参数对应的 x 和 y 的长度必须相等,否则会导致绘图错误。

以下是示例代码,展示了如何使用带有多个参数的 plot 函数来绘制三条不同的曲线:

% 定义数据点
x1 = 0:0.1:2*pi;
y1 = sin(x1);

x2 = 0:0.1:2*pi;
y2 = cos(x2);

x3 = 0:0.1:2*pi;
y3 = tan(x3);

% 绘制曲线
plot(x1, y1, 'r-', x2, y2, 'g--', x3, y3, 'b-.');

% 添加标题和坐标轴标签
title('Trigonometric Functions');
xlabel('X');
ylabel('Y');

% 设置图例
legend('sin(x)''cos(x)''tan(x)');

% 添加网格线
grid on;

在上述代码中,我们定义了三组数据点 (x1, y1)(x2, y2)(x3, y3),分别表示三条曲线的坐标。

然后,我们使用 plot 函数传入了多组参数,依次绘制了三条曲线。第一个参数 (x1, y1) 绘制了红色的正弦函数曲线,第二个参数 (x2, y2) 绘制了绿色的余弦函数曲线,第三个参数 (x3, y3) 绘制了蓝色的正切函数曲线。

通过 legend 函数设置了图例,以便识别每条曲线对应的函数。

最后,我们添加了图形的标题、坐标轴标签和网格线。

局部放大图

你可以根据需要添加更多的 (x, y) 参数对,以绘制更多的曲线。每一组 (x, y) 参数对应的曲线将会依次绘制在同一张图上。


同一坐标轴上绘制两个图形

Matlab绘制双坐标图:点击该处查阅

如果你在同一坐标轴上绘制两个图形,你可能会发现plotyy很有用——它允许你在左边和右边有独立的y轴标签,例如:plotyy(x,sin(x), x, 10*cos(x)), (对于适当定义的x)。

plotyy 函数可以在同一坐标轴上绘制两个具有独立 y 轴标签的图形。

% 定义数据点
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = 10*cos(x);

% 使用 plotyy 函数绘制两个图形
[ax, h1, h2] = plotyy(x, y1, x, y2);

% 设置第一个 y 轴的标签和颜色
ylabel(ax(1), 'sin(x)');
set(h1, 'Color''r');

% 设置第二个 y 轴的标签和颜色
ylabel(ax(2), '10*cos(x)');
set(h2, 'Color''b');

% 添加标题和 x 轴标签
title('Plotyy Example');
xlabel('X');

% 添加网格线
grid on;

在上述代码中,我们定义了数据点 (x, y1)(x, y2),分别表示两个要绘制的图形。

然后,我们使用 plotyy 函数传入了四个参数,并将返回的对象分别保存在 [ax, h1, h2] 中。ax 是包含左右两个坐标轴的对象,h1h2 分别是对应图形的句柄。

接下来,我们使用 ylabel 函数为两个 y 轴设置标签,并分别修改每个图形的颜色。通过 set 函数,我们将第一个图形的颜色设置为红色,第二个图形的颜色设置为蓝色。

通过 titlexlabel 函数,我们添加了图形的标题和 x 轴标签。

最后,我们添加了网格线来增强图形的可读性。

使用 plotyy 函数可以很方便地在同一坐标轴上绘制具有独立 y 轴标签的图形。你可以根据需要调整数据点的值,并对图形的其他属性进行自定义。

  1. 第三种方法是使用plot(x, y)的形式, 其中x和y都是矩阵,或者一个是向量,一个是矩阵.
  • 如果x或y中的一个是矩阵,而另一个是向量,则矩阵的行或列将根据向量绘制,对每个向量使用不同的颜色。选择矩阵的行或列取决于哪个行或列与向量具有相同数量的元素。如果矩阵是方阵,则使用列。
  • 如果x和y都是相同大小的矩阵,则x的列与y的列相对应。
  • 如果未指定x,如plot(y)中所示,其中y是一个矩阵,则y的列根据行索引绘制。

xy 分别是矩阵和向量时,plot(x, y) 可以按照一定规则进行绘制。下面分别举例说明:

  1. x 和 y 都是矩阵:
  % 定义 x 和 y 矩阵
  x = [1 2 34 5 67 8 9];
  y = [10 20 3040 50 6070 80 90];

  % 绘制矩阵中的数据
  plot(x, y);

在这个例子中,xy 都是 3x3 的矩阵。由于两个矩阵的大小相同,plot 函数会将 x 的每一列与 y 的对应列进行匹配,然后绘制相应的数据点。

  1. x 是向量,y 是矩阵:
 % 定义 x 向量和 y 矩阵
 x = [1 2 3];
 y = [10 20 3040 50 6070 80 90];

 % 绘制矩阵中的数据,根据 x 向量绘制
 plot(x, y);

在这个例子中,x 是一个包含 3 个元素的向量,而 y 是一个 3x3 的矩阵。由于 x 向量的长度与 y 矩阵的行数相同,plot 函数会将 x 向量与 y 矩阵的每一行进行匹配,然后绘制对应的数据点。

  1. x 是矩阵,y 是向量:
  % 定义 x 矩阵和 y 向量
  x = [1 2 34 5 67 8 9];
  y = [10 20 30];

  % 绘制矩阵中的数据,根据 y 向量绘制
  plot(x, y);

在这个例子中,x 是一个 3x3 的矩阵,而 y 是一个包含 3 个元素的向量。由于 y 向量的长度与 x 矩阵的列数相同,plot 函数会将 y 向量与 x 矩阵的每一列进行匹配,然后绘制对应的数据点。

  1. 如果未指定 x,如 plot(y) 中所示,其中 y 是一个矩阵:
  % 定义 y 矩阵
  y = [10 20 3040 50 6070 80 90];

  % 根据行索引绘制矩阵中的数据
  plot(y);

在这个例子中,由于未指定 xplot 函数会根据矩阵 y 的行索引进行绘制。即绘制每一行的数据,每一列对应 x 轴的坐标。

使用 plot(x, y) 可以灵活地处理具有不同结构的输入数据,并根据规则将其绘制在图形上。在实际应用中,你可以根据数据的结构选择合适的输入方式,并进行相应的调整和处理。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多