9.1.2 同一轴上的多个图(三种方法) 至少有三种方法可以在同一组坐标轴上绘制多个图形
(但是,如果新数据超出先前数据的范围,则可能会重新缩放)。
最简单的方法是使用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 onplot (x, y2)hold off
在这个示例中,首先使用 plot
函数绘制了 sin(x)
的图形,然后使用 hold on
命令保持当前的图形状态。接着,使用 plot
函数绘制了 cos(x)
的图形。最后,使用 hold off
命令取消 hold on
状态。 这样就在同一轴线上绘制了两个图形。你可以根据需要绘制更多的图形,只需要在 hold on 和 hold off 之间使用多个 plot 函数即可。
注意,如果你希望在同一轴线上绘制的图形具有不同的样式,例如不同的颜色、线型或标记,可以在每个 plot 函数中传入额外的参数来自定义图形的样式。
第二种方法是使用带有多个参数的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
是包含左右两个坐标轴的对象,h1
和 h2
分别是对应图形的句柄。
接下来,我们使用 ylabel
函数为两个 y 轴设置标签,并分别修改每个图形的颜色。通过 set
函数,我们将第一个图形的颜色设置为红色,第二个图形的颜色设置为蓝色。
通过 title
和 xlabel
函数,我们添加了图形的标题和 x 轴标签。
最后,我们添加了网格线来增强图形的可读性。
使用 plotyy
函数可以很方便地在同一坐标轴上绘制具有独立 y 轴标签的图形。你可以根据需要调整数据点的值,并对图形的其他属性进行自定义。
第三种方法是使用plot(x, y)的形式, 其中x和y都是矩阵,或者一个是向量,一个是矩阵. 如果x或y中的一个是矩阵,而另一个是向量,则矩阵的行或列将根据向量绘制,对每个向量使用不同的颜色。选择矩阵的行或列取决于哪个行或列与向量具有相同数量的元素。如果矩阵是方阵,则使用列。 如果x和y都是相同大小的矩阵,则x的列与y的列相对应。 如果未指定x,如plot(y)中所示,其中y是一个矩阵,则y的列根据行索引绘制。 当 x
和 y
分别是矩阵和向量时,plot(x, y)
可以按照一定规则进行绘制。下面分别举例说明:
% 定义 x 和 y 矩阵 x = [1 2 3 ; 4 5 6 ; 7 8 9 ]; y = [10 20 30 ; 40 50 60 ; 70 80 90 ]; % 绘制矩阵中的数据 plot (x, y);
在这个例子中,x
和 y
都是 3x3 的矩阵。由于两个矩阵的大小相同,plot
函数会将 x
的每一列与 y
的对应列进行匹配,然后绘制相应的数据点。
% 定义 x 向量和 y 矩阵 x = [1 2 3 ]; y = [10 20 30 ; 40 50 60 ; 70 80 90 ]; % 绘制矩阵中的数据,根据 x 向量绘制 plot (x, y);
在这个例子中,x
是一个包含 3 个元素的向量,而 y
是一个 3x3 的矩阵。由于 x
向量的长度与 y
矩阵的行数相同,plot
函数会将 x
向量与 y
矩阵的每一行进行匹配,然后绘制对应的数据点。
% 定义 x 矩阵和 y 向量 x = [1 2 3 ; 4 5 6 ; 7 8 9 ]; y = [10 20 30 ]; % 绘制矩阵中的数据,根据 y 向量绘制 plot (x, y);
在这个例子中,x
是一个 3x3 的矩阵,而 y
是一个包含 3 个元素的向量。由于 y
向量的长度与 x
矩阵的列数相同,plot
函数会将 y
向量与 x
矩阵的每一列进行匹配,然后绘制对应的数据点。
如果未指定 x
,如 plot(y)
中所示,其中 y
是一个矩阵: % 定义 y 矩阵 y = [10 20 30 ; 40 50 60 ; 70 80 90 ]; % 根据行索引绘制矩阵中的数据 plot (y);
在这个例子中,由于未指定 x
,plot
函数会根据矩阵 y
的行索引进行绘制。即绘制每一行的数据,每一列对应 x 轴的坐标。
使用 plot(x, y)
可以灵活地处理具有不同结构的输入数据,并根据规则将其绘制在图形上。在实际应用中,你可以根据数据的结构选择合适的输入方式,并进行相应的调整和处理。