本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

合并多个绘图

您可以采用多种方式合并绘图。利用子图,可在同一坐标区中合并多个图,或在一个图窗中创建多个坐标区。

在同一坐标区中合并绘图

默认情况下,新图将清除现有图,并重置标题等坐标区属性。但是,您可以使用 hold on 命令在同一坐标区中合并多个图。例如,绘制两条直线和一个散点图,然后将 hold 状态重置为 off。

x = linspace(0,10,50);
y1 = sin(x);
plot(x,y1)
title('Combine Plots')

hold on

y2 = sin(x/2);
plot(x,y2)

y3 = 2*sin(x);
scatter(x,y3) 

hold off

启用 hold 状态后,新图不会清除现有图,也不会重置标题或轴标签等坐标区属性。新图将根据坐标区的 ColorOrderLineStyleOrder 属性循环使用颜色和线型。坐标区范围和刻度值可能会进行调整以适应新数据。

使用子图在图窗中创建多个坐标区

使用 subplot 函数在一个图窗中创建多个坐标区,该函数可将图窗划分为若干个子图网格。subplot 的前两个输入表示每行和每列的子图数。第三个输入指定哪个子图处于活动状态。MATLAB 按行对子图位置编号。图形函数(例如 plottitle)的作用目标是活动子图。

例如,在一个图窗窗口内的 2×1 网格中创建两个堆叠的子图。为每个子图添加标题。

subplot(2,1,1);
x = linspace(0,10,50);
y1 = sin(x);
plot(x,y1)
title('Subplot 1')

subplot(2,1,2);
y2 = rand(50,1);
scatter(x,y2)
title('Subplot 2')

创建跨多个网格位置的子图

要创建跨多个网格位置的子图,请以位置数组的形式指定 subplot 函数的第三个输入参数。例如,创建一个 2×2 网格子图。在图窗的上半部分创建两个子图,在整个下半部分创建一个子图。

figure
subplot(2,2,1);
x = linspace(0,10,50);
y1 = sin(x);
plot(x,y1)

subplot(2,2,2);
y2 = rand(50,1);
scatter(x,y2)

subplot(2,2,[3 4]);
y3 = rand(50,1);
plot(x,y2)

修改子图外观

通过设置底层 Axes 对象的属性,可以修改子图外观。使用 subplot 函数的输出参数访问 Axes 对象。还可以使用 Axes 对象作为图形函数的第一个输入参数,以确保该函数作用于正确的子图。

例如,创建两个子图,并将 Axes 对象赋给变量 ax1ax2。更改第一个子图的坐标区字体大小和 x 轴颜色。为第二个子图添加网格线。

figure
ax1 = subplot(2,1,1);
x = linspace(0,10,50);
y1 = sin(x);
plot(ax1,x,y1)
title(ax1,'Subplot 1')
ax1.FontSize = 14;
ax1.XColor = 'red';

ax2 = subplot(2,1,2);
y2 = rand(50,1);
scatter(ax2,x,y2)
title(ax2,'Subplot 2')
grid(ax2,'on')

为子图网格添加超级标题

在创建包含子图的图窗时,您可能想添加一个适用于所有子图的标题。从 R2018b 开始,您可以使用 sgtitle 函数为子图网格添加一个总标题。

subplot(2,1,1);
x = linspace(0,10,50);
y1 = sin(x);
plot(x,y1)
title('Subplot 1')

subplot(2,1,2);
y2 = rand(50,1);
scatter(x,y2)
title('Subplot 2')

sgtitle('My Subplot Grid Title')

另请参阅

函数

相关主题