当我们需要在不同的情景下对比结果或者绘制不同坐标轴下的图形时,可以选择在同一个图形窗口绘制子图。MATLAB的subplot函数能够绘制子图,今天主要是以实例讲解。
1.subplot函数语法
subplot
在平铺位置创建坐标区
语法
subplot(m,n,p)
subplot(m,n,p,'replace')
subplot(m,n,p,'align')
subplot(m,n,p,ax)
subplot('Position',pos)
subplot(___,Name,Value)
ax = subplot(___)
subplot(ax)
说明
subplot(m,n,p) 将当前图窗划分为 m×n 网格,并在 p 指定的位置创建坐标区。MATLAB? 按行号对子图位置进行编号。第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推。如果指定的位置已存在坐标区,则此命令会将该坐标区设为当前坐标区。
subplot(m,n,p,'replace') 删除位置 p 处的现有坐标区并创建新坐标区。
subplot(m,n,p,'align') 创建新坐标区,以便对齐图框。此选项为默认行为。
subplot(m,n,p,ax) 将现有坐标区 ax 转换为同一图窗中的子图。
subplot('Position',pos) 在 pos 指定的自定义位置创建坐标区。使用此选项可定位未与网格位置对齐的子图。指定 pos 作为 [left bottom width height] 形式的四元素向量。如果新坐标区与现有坐标区重叠,新坐标区将替换现有坐标区。
subplot(___,Name,Value) 使用一个或多个名称-值对组参数修改坐标区属性。在所有其他输入参数之后设置坐标区属性。
ax = subplot(___) 创建一个 Axes 对象、PolarAxes 对象或 GeographicAxes 对象。以后可以使用 ax 修改坐标区。
subplot(ax) 将 ax 指定的坐标区设为父图窗的当前坐标区。如果父图窗尚不是当前图窗,此选项
2.实例1
程序
clc;%清除命令行窗口命令
clear all;%清除工作区变量
close all;%关闭图形窗口
%上部和下部子图
figure;
subplot(2,1,1);
[X,Y,Z] = peaks(20);
surf(X,Y,Z)
xlabel('x');
ylabel('y');
zlabel('z');
subplot(2,1,2);
plot3(X,Y,Z)
xlabel('x');
ylabel('y');
zlabel('z');
%子图的象限
figure;
subplot(2,2,1)
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)
title('Subplot 1: sin(x)')
subplot(2,2,2)
y2 = sin(2*x);
plot(x,y2)
title('Subplot 2: sin(2x)')
subplot(2,2,3)
y3 = sin(4*x);
plot(x,y3)
title('Subplot 3: sin(4x)')
subplot(2,2,4)
y4 = sin(8*x);
plot(x,y4)
title('Subplot 4: sin(8x)')
运行结果
3.实例2
绘制大小不同的子图,并可以修改属性替换
程序
clc;%清除命令行窗口命令
clear all;%清除工作区变量
close all;%关闭图形窗口
%大小不同的子图
x = linspace(-10*pi,10*pi,50);
y1 = cos(x/2)+sin(x/2);
y2 = sin(x/3)+cos(x/3);
y3 = sin(x/4)+cos(x/4);
y4 = sin(x/5)+cos(x/5);
subplot(2,2,1);
plot(x,y1)
xlabel('x');
ylabel('y');
title('y = cos(x/2)+sin(x/2)');
subplot(2,2,2);
plot(x,y2,'r-o')
xlabel('x');
ylabel('y');
title('sin(x/3)+cos(x/3)');
subplot(2,2,[3 4]);
plot(x,y3,'b-^')
hold on;
plot(x,y4,'b-^','markerface','b');
legend('y = sin(x/4)+cos(x/4)','y = sin(x/5)+cos(x/5)');
xlabel('x');
ylabel('y');
%将子图替换为空坐标区
subplot(2,2,1,'replace')
运行结果
4.实例3
程序
clc;%清除命令行窗口命令
clear all;%清除工作区变量
close all;%关闭图形窗口
%自定义位置上的子图
figure;
pos1 = [0.1 0.3 0.3 0.3];
subplot('Position',pos1)
y = magic(4);
plot(y)
title('First Subplot')
pos2 = [0.5 0.15 0.4 0.7];
subplot('Position',pos2)
bar(y)
title('Second Subplot')
%创建包含极坐标区的子图
figure
ax1 = subplot(2,1,1,polaraxes);
theta = linspace(0,2*pi,50);
rho = sin(theta).*cos(theta);
polarplot(ax1,theta,rho)
ax2 = subplot(2,1,2,polaraxes);
polarscatter(ax2,theta,rho)
%创建后修改坐标区属性
figure;
ax1 = subplot(2,1,1);
Z = peaks;
plot(ax1,Z(1:20,:))
ax2 = subplot(2,1,2);
plot(ax2,Z)
ax1.FontSize = 15;
ax2.LineWidth = 2;
运行结果
本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。
作 者 | 郭志龙
编 辑 | 郭志龙
校 对 | 郭志龙