本示例说明如何使用
hold
功能在同一坐标系下组合绘图,以及如何使用
tiledlayout
功能在图形中创建多个轴。该
tiledlayout
功能在R2019b开始提供。如果使用的是早期版本,请改用该
subplot
函数。
在相同的轴上合并图
默认情况下,新图清除现有图并重置轴属性,例如标题。但是,您可以使用该
hold on
命令在同一轴上合并多个图。例如,绘制两条线和一个散点图。然后将保持状态重置为关闭。
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
保持状态打开时,新图不会清除现有图或重置轴属性,例如标题或轴标签。绘图根据轴的
ColorOrder
和
LineStyleOrder
属性在颜色和线条样式之间循环。轴线范围和刻度值可能会调整以适应新数据。
在图形中显示多个轴
通过使用该
tiledlayout
功能,可以在一个图形中显示多个轴。此功能创建一个平铺的图表布局,其中包含整个图上不可见的平铺网格。每个图块可以包含一个用于显示图的轴。创建布局后,调用该
nexttile
函数以将轴对象放置到布局中。然后调用一个绘图函数来绘制轴。例如,以2×1布局创建两个图。为每个图添加标题。
注意:此代码使用
tiledlayout
从R2019b开始可用的功能。如果使用的是早期版本,请改用
subplot
函数。
x = linspace(0,10,50);
y1 = sin(x);
y2 = rand(50,1);
tiledlayout(2,1) % Requires R2019b or later %定义两个图形窗口
% Top plot
nexttile%访问第一个窗口
plot(x,y1)
title('Plot 1')
% Bottom plot
nexttile%访问下一个窗口
scatter(x,y2)
title('Plot 2')
创建跨越多行或多列的图
要创建跨越多行或多列的绘图,请在
span
调用时指定参数
nexttile
。例如,创建2 x 2布局。绘制成前两个图块。然后创建一个跨越一排和两列的绘图。
x = linspace(0,10,50);
y1 = sin(x);
y2 = rand(50,1);
% Top two plots
tiledlayout(2,2) % Requires R2019b or later
nexttile
plot(x,y1)
nexttile
scatter(x,y2)%绘制散点图
% Plot that spans
nexttile([1 2])
y2 = rand(50,1);%产生随机数,50行1列
plot(x,y2)
修改轴外观
通过在每个轴对象上设置属性来修改轴外观。您可以通过
nexttile
使用带有输出参数的函数来获取axes对象。您还可以将轴对象指定为图形函数的第一个输入参数,以确保该函数定位正确的轴。
例如,创建两个图并将轴对象分配给变量
ax1
和
ax2
。更改第一个绘图的轴字体大小和x轴颜色。将网格线添加到第二个图。
x = linspace(0,10,50);
y1 = sin(x);
y2 = rand(50,1);
tiledlayout(2,1) % Requires R2019b or later
% Top plot
ax1 = nexttile;
plot(ax1,x,y1)
title(ax1,'Plot 1')
ax1.FontSize = 14;
ax1.XColor = 'red';
% Bottom plot
ax2 = nexttile;
scatter(ax2,x,y2)
title(ax2,'Plot 2')
grid(ax2,'on')
控制子图周围的间距
您可以通过指定
Padding
和
TileSpacing
属性来控制布局中图块周围的间距。例如,以2 x 2布局显示四个图。
x = linspace(0,30);
y1 = sin(x);
y2 = sin(x/2);
y3 = sin(x/3);
y4 = sin(x/4);
% Create plots
t = tiledlayout(2,2); % Requires R2019b or later %获得图形窗口对象
nexttile
plot(x,y1)
nexttile
plot(x,y2)
nexttile
plot(x,y3)
nexttile
plot(x,y4)
将
Padding
和
TileSpacing
属性设置为,以最小化布局周边和每个图块之间的间距
'none'
。
t.Padding = 'none';
t.TileSpacing = 'none';
显示共享的标题和轴标签
您可以在布局中显示共享标题和共享轴标签。创建一个2比1的布局
t
。然后显示一个线图和一个stem图。通过调用函数来同步x轴限制
linkaxes
。
x1 = linspace(0,20,100);
y1 = sin(x1);
x2 = 3:17;
y2 = rand(1,15);
% Create plots.
t = tiledlayout(2,1); % Requires R2019b or later
ax1 = nexttile;
plot(ax1,x1,y1)
ax2 = nexttile;
stem(ax2,x2,y2)
% Link the axes
linkaxes([ax1,ax2],'x');
通过使添加共享标题和共用轴标签
t
的
title
,
xlabel
和
ylabel
功能。通过移除移动地块靠得更近X从上图轴刻度标记和设置
TileSpacing
的属性
t
来
'compact'
。
% Add shared title and axis labels
title(t,'My Title')
xlabel(t,'x-values')
ylabel(t,'y-values')
% Move plots closer together
xticklabels(ax1,{})
t.TileSpacing = 'compact';
注:本文根据MATLAB官网内容修改而成。