
本示例說明如何使用
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官網内容修改而成。