来源:https://ww2.mathworks.cn/help/matlab/ref/subplot.html?searchHighlight=subplot&s_tid=doc_srchtitle
说明
示例
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 ) 使用一个或多个名称-值对组参数修改坐标区属性。有关属性列表,请参阅 Axes 属性。在所有其他输入参数之后设置坐标区属性。
示例
ax = subplot(___) 返回创建的 Axes 对象。以后可以使用 ax 修改坐标区。有关属性列表,请参阅 Axes 属性。
示例
subplot(ax ) 将 ax 指定的坐标区设为父图窗的当前坐标区。如果父图窗尚不是当前图窗,此选项不会使父图窗成为当前图窗。
示例
全部折叠
上部和下部子图
创建带有两个堆叠子图的图窗。在每个子图上绘制一条正弦波。
子图的象限
创建一个分为四个子图的图窗。在每个子图上绘制一条正弦波并为每个子图指定标题。
大小不同的子图
创建一个包含三个子图的图窗。在图窗的上半部分创建两个子图,并在图窗的下半部分创建第三个子图。在每个子图上添加标题。
将子图替换为空坐标区
创建一个包含四个随机数据针状图的图窗。然后将第二个子图替换为空坐标区。
自定义位置上的子图
创建包含两个未与网格位置对齐的子图的图窗。为每个子图指定一个自定义位置。
创建包含极坐标区的子图
创建包含两个极坐标区的图窗。在上部子图中创建极坐标线图,在下部子图中创建极坐标散点图。
创建后修改坐标区属性
创建带有两个子图的图窗。将 Axes 对象赋给变量 ax1 和 ax2 。将 Axes 对象指定为绘图函数的输入,以确保绘图函数在特定的子图中进行绘制。
通过设置 Axes 对象的属性来修改坐标区。更改上部子图的字体大小和下部子图的线宽。某些绘图函数可设置坐标区属性。先执行绘图函数,然后指定坐标区属性以免覆盖现有坐标区属性的设置。
注意:从 R2014b 开始,您可以使用圆点表示法设置属性。如果您使用的是早期版本,请改用 set 函数。
使子图成为当前坐标区
创建一个包含多个子图的图窗。将 Axes 对象存储在向量 ax 中。然后使第二个子图成为当前坐标区。创建一个线图并更改第二个子图的坐标轴范围。默认情况下,图形函数作用于当前坐标区。
将现有坐标区转换为子图
创建一个线图。然后转换坐标区,使其成为图窗的下部子图。subplot 函数使用原始坐标区所在的图窗。
将不同图窗中的坐标区转换为子图
将位于不同图窗中的坐标区合并到包含子图的单个图窗中。
在两个不同的图窗中创建两个图。将 Axes 对象赋给变量 ax1 和 ax2 。将 Legend 对象赋给变量 lgd 。
使用 copyobj 创建两个 Axes 对象的副本。将复制的坐标区的父级指定为新图窗。由于图例和颜色栏不会随相关坐标区一起复制,因此请随坐标区一起复制图例。
输入参数
全部折叠
m - 网格行数 1 (默认) | 正整数
网格行数,指定为正整数。
数据类型: single | double
n - 网格列数 1 (默认) | 正整数
网格列数,指定为正整数。
数据类型: single | double
p - 新坐标区的网格位置 标量 | 向量
新坐标区的网格位置,指定为标量或正整数向量。
示例: subplot(2,3,1) 在位置 1 处创建一个子图。
示例: subplot(2,3,[2,5]) 创建跨位置 2 和 5 的子图。
示例: subplot(2,3,[2,6]) 创建跨位置 2、3、5 和 6 的子图。
数据类型: single | double
pos - 新坐标区的自定义位置 四元素向量
新坐标区的自定义位置,指定为 [left bottom width height] 形式的四元素向量。
指定介于 0 和 1 之间的归一化值(基于图窗内界)。
注意
使用脚本创建子图时,在发出 drawnow 命令或 MATLAB 返回到等待用户命令之前,MATLAB 不会最终确定 Position 属性值。在脚本刷新绘图或退出之前,子图的 Position 属性值会受到变化的影响。
示例: subplot(\'Position\',[0.1 0.1 0.45 0.45])
数据类型: single | double
ax - 要设为当前坐标区或转换为子图的现有坐标区
Axes 对象 | PolarAxes 对象 | 图形对象
要设为当前坐标区或转换为子图的现有坐标区,指定为 Axes 对象、PolarAxes 对象或具有 ActivePositionProperty 属性的图形对象,如 HeatmapChart 对象。
要在子图位置创建空的极坐标区,请将 ax 指定为 polaraxes 函数,例如 subplot(2,1,2,polaraxes) 。
名称-值对组参数
指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。
示例: subplot(m,n,p,\'XGrid\',\'on\')
有关您可以设置的属性的列表,请参阅 Axes 属性。某些绘图函数会覆盖属性设置。请考虑在绘图后设置坐标区属性。
提示
-
要清除图窗的内容,请使用 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 对象,如果代码指定了返回参数,将会发生错误。
|
请发表评论