MATLAB中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 指定的坐标区设为父图窗的当前坐标区。如果父图窗尚不是当前图窗,此选项不会使父图窗成为当前图窗。

示例

上部和下部子图

创建带有两个堆叠子图的图窗。在每个子图上绘制一条正弦波。

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

subplot(2,1,2);
y2 = sin(5*x);
plot(x,y2)

如图所示:

子图的象限

创建一个分为四个子图的图窗。在每个子图上绘制一条正弦波并为每个子图指定标题。

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)')

如图所示:

大小不同的子图

创建一个包含三个子图的图窗。在图窗的上半部分创建两个子图,并在图窗的下半部分创建第三个子图。在每个子图上添加标题。

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 and 4: Both')

如图所示:

将子图替换为空坐标区

创建一个包含四个随机数据针状图的图窗。然后将第二个子图替换为空坐标区。

for k = 1:4
    data = rand(1,10);
    subplot(2,2,k)
    stem(data)
end

如图所示:

subplot(2,2,2,'replace')

如图所示:

自定义位置上的子图

创建包含两个未与网格位置对齐的子图的图窗。为每个子图指定一个自定义位置。

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)

如图所示:

创建后修改坐标区属性

创建带有两个子图的图窗。将 Axes 对象赋给变量 ax1 和 ax2。将 Axes 对象指定为绘图函数的输入,以确保绘图函数在特定的子图中进行绘制。

ax1 = subplot(2,1,1);
Z = peaks;
plot(ax1,Z(1:20,:))

ax2 = subplot(2,1,2);
plot(ax2,Z)

如图所示:

通过设置 Axes 对象的属性来修改坐标区。更改上部子图的字体大小和下部子图的线宽。某些绘图函数可设置坐标区属性。先执行绘图函数,然后指定坐标区属性以免覆盖现有坐标区属性的设置。使用圆点表示法设置属性。

使子图成为当前坐标区

创建一个包含多个子图的图窗。将 Axes 对象存储在向量 ax 中。然后使第二个子图成为当前坐标区。创建一个线图并更改第二个子图的坐标轴范围。默认情况下,图形函数作用于当前坐标区。

for k = 1:4
    ax(k) = subplot(2,2,k);
end
subplot(ax(2))
x = linspace(1,50);
y = sin(x);
plot(x,y,'Color',[0.1, 0.5, 0.1])
title('Second Subplot')
axis([0 50 -1 1])

如图所示:

将现有坐标区转换为子图

创建一个线图。然后转换坐标区,使其成为图窗的下部子图。subplot 函数使用原始坐标区所在的图窗。

x = linspace(1,10);
y = sin(x);
plot(x,y)
title('Sine Plot')

如图所示:

ax = gca;
subplot(2,1,2,ax)

如图所示:

将不同图窗中的坐标区转换为子图

将位于不同图窗中的坐标区合并到包含子图的单个图窗中。

在两个不同的图窗中创建两个图。将 Axes 对象赋给变量 ax1 和 ax2。将 Legend 对象赋给变量 lgd。

figure
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)
title('Line Plot 1')

如图所示:

ax1 = gca;

figure
y2 = 2*sin(x);
plot(x,y2)
title('Line Plot 2')
lgd = legend('2*Sin(x)');

如图所示:

ax2 = gca;

使用 copyobj 创建两个 Axes 对象的副本。将复制的坐标区的父级指定为新图窗。由于图例和颜色栏不会随相关坐标区一起复制,因此请随坐标区一起复制图例。

fnew = figure;
ax1_copy = copyobj(ax1,fnew);
subplot(2,1,1,ax1_copy)

copies = copyobj([ax2,lgd],fnew);
ax2_copy = copies(1);
subplot(2,1,2,ax2_copy)

如图所示:

 输入参数说明

m - 网格行数

网格行数,指定为正整数。

n - 网格列数

网格列数,指定为正整数。

p - 新坐标区的网格位置

新坐标区的网格位置,指定为标量或正整数向量。

  • 如果 p 是正整数标量,则 subplot 在网格位置 p 处创建一个子图。
  • 如果 p 是正整数向量,则 subplot 新建一个跨 p 中列出的网格位置的子图。

示例:subplot(2,3,1) 在位置 1 处创建一个子图。

示例: subplot(2,3,[2,5]) 创建跨位置 2 和 5 的子图。

示例: subplot(2,3,[2,6]) 创建跨位置 2、3、5 和 6 的子图。

pos - 新坐标区的自定义位置

新坐标区的自定义位置,指定为 [left bottom width height] 形式的四元素向量。

  • left 和 bottom 元素指定子图的左下角相对于图窗的左下角的位置。
  • width 和 height 元素指定子图维度。

指定介于 0 和 1 之间的归一化值(基于图窗内界)。

        注意:使用脚本创建子图时,在发出 drawnow 命令或 MATLAB 返回到等待用户命令之前,MATLAB 不会最终确定 Position 属性值。在脚本刷新绘图或退出之前,子图的 Position 属性值会受到变化的影响。

ax - 要设为当前坐标区或转换为子图的现有坐标区

要设为当前坐标区或转换为子图的现有坐标区,指定为 Axes 对象、PolarAxes 对象、GeographicAxes 对象或具有 PositionConstraint 属性的图形对象,如 HeatmapChart 对象。

要在子图位置创建空的极坐标区或地理坐标区,请将 ax 指定为 polaraxes 或 geoaxes 函数。例如,subplot(2,1,2,polaraxes)。

提示

  • 要清除图窗的内容,请使用 clf。例如,您可以在创建新子图布局之前清除图窗中的现有子图布局。
  • 要叠加坐标区,请改用 axes 命令。subplot 函数会删除与新坐标区重叠的现有坐标区。例如,subplot('Position',[.35 .35 .3 .3]) 会删除所有底层坐标区,但 axes('Position',[.35 .35 .3 .3]) 会将新坐标区置于图窗的中部而不删除底层坐标区。
  • subplot(111) 是一个例外,其行为与 subplot(1,1,1) 不同。出于向后兼容的原因,subplot(111) 是子图的一种特殊情况,它不立即创建坐标区,而是设置图窗,以便接下来的图形命令执行 clf reset。接下来的图形命令将删除所有图窗子级,并在默认位置创建新的坐标区。subplot(111) 不返回 Axes 对象,如果代码指定了返回参数,将会发生错误。

替代功能

​使用 tiledlayout 和 nexttile 函数创建可配置的绘图平铺。配置选项包括:​

  • 对绘图之间和布局边缘周围间距的控制
  • 布局顶部共享标题的选项
  • 共享 x 轴和 y 轴标签的选项
  • 用于控制分块是固定大小还是可以调整的可变大小的选项

总结

到此这篇关于MATLAB中subplot函数使用的文章就介绍到这了,更多相关MATLAB subplot函数使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 浅析matlab中imadjust函数

    imadjust imadjust是一个计算机函数,该函数用于调节灰度图像的亮度或彩色图像的颜色矩阵.在matlab的命令窗口中键入: doc imadjust或者help imadjust即可获得该函数的帮助信息, 键入type imadjust可以查看函数的源代码. 函数功能: imadjust在数字图像处理中用于进行图像的灰度变换(调节灰度图像的亮度或彩色图像的颜色矩阵).在matlab的命令窗口中键入: doc imadjust或者help imadjust即可获得该函数的帮助信息, 键

  • 简述Matlab中size()函数的用法

    size()函数用来获取矩阵的行数和列数. (1)s=size(A), 当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数. (2)[r,c]=size(A), 当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c. (3)size(A,n)如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数.其中r=size(A,1)该语句返回的时矩阵A的行数, c=si

  • C++如何调用matlab函数

    本来电脑上安装的是matlab2012b,但是好像2012b只有64位的,故重新安装matlab7,安装完注册一下,cmd cd到matlab7的程序目录bin文件夹下,注册 matlab /regserver,就可以调用matlab了,先测试第一种方法,调用引擎,engOpen.engSetVisible.engClose engEvalString(m_pEngine, "x1 = 0.01 : 0.01 : 10 * pi"); engEvalString(m_pEngine,

  • 详解Matlab中 sort 函数用法

    (1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序. eg: A=[1,5,3],则sort(A)=[1,3,5] A=[1,5,3;2,4,1],则sort(A)=[1,4,1;2,5,3] (2)B=sort(A,dim),对数组按指定方向进行升序排序, dim =1,表示对每一列进行排序,,dim=2表示对每一行进行排序. (3)B=sort(A,dim,mode),mode为指定排序模式,mode为"ascend"时,

  • MATLAB中subplot函数的语法与使用实例

    目录 语法 说明 示例 上部和下部子图 子图的象限 大小不同的子图 将子图替换为空坐标区 自定义位置上的子图 创建包含极坐标区的子图 创建后修改坐标区属性 使子图成为当前坐标区 将现有坐标区转换为子图 将不同图窗中的坐标区转换为子图 总结 subplot函数的功能是在各个分块位置创建坐标区. 语法 subplot(m,n,p) subplot(m,n,p,'replace') subplot(m,n,p,'align') subplot(m,n,p,ax) subplot('Position',

  • MATLAB中print函数使用示例详解

    目录 语法 说明 示例 打印图窗纸张副本 将图窗复制到剪贴板 将图窗另存为图像文件 将图窗另存为向量图形文件 向 EPS 文件添加 TIFF 预览 指定要保存的图窗 以屏幕大小和分辨率保存图窗 保存填满页面的图窗 保存图窗而不保存 UIControl 返回图窗的 RGB 图像数据 创建高分辨率影片帧 print函数的功能是打印图窗或保存为特定文件格式. 语法 print(filename,formattype) print(filename,formattype,formatoptions) p

  • matlab中imadjust函数的作用及应用举例

    imadjust简介 imadjust是一个计算机函数,该函数用于调节灰度图像的亮度或彩色图像的颜色矩阵.在matlab的命令窗口中键入: doc imadjust或者help imadjust即可获得该函数的帮助信息, 键入type imadjust可以查看函数的源代码. 调用格式: J = imadjust(I) J = imadjust(I,[low_in; high_in],[low_out; high_out]) J = imadjust(I,[low_in; high_in],[lo

  • Mysql中TIMESTAMPDIFF函数的语法与练习案例

    目录 语法结构 参数说明 示例 练习案例 总结 TIMESTAMPDIFF函数用于计算两个日期的时间差 语法结构 TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2) 参数说明 unit: 日期比较返回的时间差单位,常用可选值如下: SECOND:秒 MINUTE:分钟 HOUR:小时 DAY:天 WEEK:星期 MONTH:月 QUARTER:季度 YEAR:年 datetime_expr1: 要比较的日期1 datetime_expr2: 要比较

  • Python中zip()函数的解释和可视化(实例详解)

    zip()的作用 先看一下语法: zip(iter1 [,iter2 [...]]) -> zip object Python的内置help()模块提供了一个简短但又有些令人困惑的解释: 返回一个元组迭代器,其中第i个元组包含每个参数序列或可迭代对象中的第i个元素.当最短的可迭代输入耗尽时,迭代器将停止.使用单个可迭代参数,它将返回1元组的迭代器.没有参数,它将返回一个空的迭代器. 与往常一样,当您精通更一般的计算机科学和Python概念时,此模块非常有用.但是,对于初学者来说,这段话只会引发更

  • C++中静态成员函数访问非静态成员的实例

    C++中静态成员函数访问非静态成员的实例 实现代码: #include <iostream> /* 静态成员函数只能访问静态数据成员.静态成员函数和类以外的函数和数据,不能访问非静态数据成员,但静态成员函数或静态数据成员可由任意访问许可的函数访问.原因是:当前对象的地址(this)是被隐含地传递到被调用的函数的.但一个静态成员函数没有this指针,所以它无法访问非静态的成员函数. */ class a { public: static void FunctionA()//静态成员函数没有隐含的

  • C++ 中回调函数详解及简单实例

    C++ 中回调函数详解及简单实例 回调函数调用关系图 对于第一种情况,主程序可以从执行到回调函数,也可以不执行回调函数,关键看宿主函数是否调用了回调函数. 对于第二种情况,主程序可以从执行到回调函数,也可以不执行回调函数,关键看宿主函数是否调用了回调函数.主程序不知道宿主函数什么时候调用回调函数,因为调用函数启动了线程,这样,主程序就不必关心宿主函数什么时候调用回调函数了,主程序可以释放出来做自己的事了. 代码示例 #include <stdio.h> typedef void(*lpFunc

  • python中pop()函数的语法与实例

    语法: 列表 list.pop(obj=list[-1]) pop()用于删除并返回列表中的一个元素(默认为最后一个元素) obj:要删除并返回的列表元素 字典dict.pop(key[,default]) pop()用于删除字典中给定的key及对应的value,返回被删除key对应的value,key值必须给出.给定的key值不在字典中时,返回default值. key:需要删除的key值(不给出会报错) default:若没有字典中key值,返回default值(给定的key值不在字典中时必

随机推荐