首页 > 编程笔记 > MATLAB笔记 阅读:9

MATLAB subplot():绘制子图(附带实例)

在一个图窗中,利用 subplot() 函数可以同时绘制多个子图,该函数的调用格式如下:
subplot(m,n,p)  % 在当前图窗中创建 m×n 幅子图
                % 子图按从左到右、从上到下的顺序编号
                % 若 p 为向量,则以向量表示的位置建立当前子图的坐标平面
subplot(m,n,p,'replace') % 删除位置 p 处的现有坐标区并创建新坐标区
subplot(m,n,p,'align') % 创建新坐标区,以便对齐子图框,为默认行为
subplot(m,n,p,ax) % 将现有坐标区 ax 转换为同一图窗中的子图
subplot(h)  % 指定当前子图坐标平面的句柄 h,h 为按 m、n、p 排列的整数
            % 例如 h=232,表示第 2 个子图坐标平面的句柄
subplot('Position', pos) % 在 pos 指定的位置创建新坐标区
h=subplot(...) % 创建当前子图坐标平面时,同时返回其句柄
其中,pos 为 [left bottom width height] 形式的四元素向量,它把当前图窗看作 [0 0 1 1] 的平面,所以 left、bottom、width、height 分别在 (0,0)、(1,0) 的范围内取值,分别表示所创建当前子图坐标平面距离图窗左边、底边的长度,以及所建子图坐标平面的宽度和高度。

注意,函数 subplot() 只用来创建子图坐标平面,在该坐标平面内绘制子图,仍然需要使用 plot() 函数或其他绘图函数。


【实例 1】创建一个包含三个子图的图窗。在图窗的上半部分创建两个子图,在图窗的下半部分创建第三个子图。在编辑器中编写以下程序并运行。
subplot(2,2,1);
x=linspace(-3.8,3.8);
y_cos=cos(x);
plot(x,y_cos);
title('Subplot 1: Cosine')
subplot(2,2,2);
y_poly=1-x.^2./2+x.^4./24;
plot(x,y_poly,'g');
title('Subplot 2: Polynomial')
subplot(2,2,[3,4]);
plot(x,y_cos,'b',x,y_poly,'g');
title('Subplot 3&4: Cosine & Polynomial')
运行程序后,输出如下图所示的图形:


图 1 创建的包含三个子图的图窗

【实例 2】用函数画一个子图。在编辑器中编写以下程序并运行。
x=linspace(0,2*pi,100); % x 轴从 0~2π 取 100 点
subplot(2,2,1)
plot(x,sin(x)) % 在视窗的第一行第一列画 sin(x)
xlabel('x') % x 轴加注解 x
ylabel('y') % y 轴加注解 y
title('sin(x)') % 加标题 sin(x)

subplot(2,2,2)
plot(x,cos(x))
xlabel('x'); ylabel('y'); title('cos(x)')

subplot(2,2,3)
plot(x,exp(x))
xlabel('x'); ylabel('y'); title('exp(x)')

subplot(2,2,4)
plot(x,exp(-x))
xlabel('x'); ylabel('y'); title('exp(-x)')
运行程序后,输出如下图所示的图形。


图 2 绘制的子图

相关文章