Main Content

TiledChartLayout 属性

分块图布局的外观和行为

自 R2019b 起

分块图布局是用于在图窗中以分块方式显示绘图的容器。每个图块可以包含一个用于显示绘图的坐标区对象。通过更改属性值,您可以修改布局的特定方面。

t = tiledlayout(2,2);
t.TileSpacing = 'compact';

布局

全部展开

网格大小,指定为 [m n] 形式的向量,其中 m 是行数,n 是列数。仅当布局中的所有图块都为空时,才能设置此属性。当您设置此属性时,MATLAB® 会将 TileArrangement 属性设置为 'fixed'

对于 TileArrangement 属性设置为 'flow' 的布局,此属性的值可能会自动更改。例如,如果父容器的大小进行了调整或布局中的坐标区数发生了变化,则网格大小也会更新以适应这些变化。

此 属性 为只读。

图块排列,返回为下列值之一:

  • "fixed" - 布局是具有由 GridSize 属性确定的固定行数和列数的网格。采用此图块排列的 m×n 布局最多可显示 m*n 个绘图。

  • "flow" - 布局是具有可变行数和列数的网格。每次您调用 nexttile 时,布局都会根据需要进行调整以适应新坐标区,同时保持所有图块的纵横比约为 4:3。

  • "vertical" - 布局包含垂直堆叠的坐标区。每次调用 nexttile 时,都会将一个新坐标区对象添加到堆叠的底部。 (自 R2023a 起)

  • "horizontal" - 布局包含水平堆叠的坐标区。每次调用 nexttile 时,都会将一个新坐标区对象添加到堆叠的右侧。 (自 R2023a 起)

如果您手动设置 GridSize 属性,则 MATLAB 会将此属性的值设置为 "fixed"

要设置图块排列,请在调用 tiledlayout 函数时指定 arrangement 参量。

图块间距,指定为 "loose""compact""tight""none"。使用此属性控制图块之间的间距。

下表显示每个值如何影响 2×2 布局的外观。

外观

"loose"

Tiled chart layout with "loose" tile spacing.

"compact"

Tiled chart layout with "compact" tile spacing.

"tight"

Tiled chart layout with "tight" tile spacing.

"none"

Tiled chart layout with "none" tile spacing.

布局周围的填充,指定为 "loose""compact""tight"。不管此属性使用哪个值,布局都会为所有装饰元素(如轴标签)提供空间。

下表显示每个值如何影响 2×2 布局的外观。

外观

"loose"

Tiled chart layout with "loose" padding.

"compact"

Tiled chart layout with "compact" padding.

"tight"

Tiled chart layout with "tight" padding.

图块索引方案,指定为下表中的一个值。nexttile 函数根据此索引方案填充图块。如果更改已填充布局的图块索引方案,则图块位置会发生变化以匹配新方案。当您调用 nexttile 以获取特定图块中的坐标区对象时,索引方案还会对 MATLAB 返回的坐标区对象产生影响。

描述
'rowmajor'

图块编号按照从左到右的顺序逐行递增。例如,下图显示 2×2 布局的行优先图块索引。

Four numbered tiles with the 'rowmajor' indexing scheme

'columnmajor'

图块编号按照从上到下的顺序逐列递增。例如,下图显示 2×2 布局的列优先图块索引。

Four numbered tiles with the 'columnmajor' indexing scheme

标签

全部展开

共享标题的 Text 对象。要添加共享标题,请设置 Text 对象的 String 属性。要更改标题外观,例如字体样式或字体颜色,请设置其他属性。例如,为 2×2 布局创建一个具有加粗字体的共同标题。

t = tiledlayout(2,2);
t.Title.String = 'My Title';
t.Title.FontWeight = 'bold';

或者,将 TiledChartLayout 对象传递给 title 函数。

title(t,'My Title','FontWeight','normal')

有关可以指定的属性的完整列表,请参阅 Text 属性

注意

布局的 Children 属性中不包含 Text 对象,因此 findobj 函数无法返回该对象。

共享副标题的文本对象。要添加副标题,请设置文本对象的 String 属性。要更改其外观,如字体角度,请设置其他属性。有关完整列表,请参阅 Text 属性

t = tiledlayout(2,2);
t.Subtitle.String = 'An Insightful Subtitle';
t.Subtitle.FontAngle = 'italic';

也可以使用 subtitle 函数添加副标题并控制外观。

subtitle('An Insightful Subtitle','FontAngle','italic')

或者使用 title 函数,指定两个字符向量输入参量和两个输出参量。然后设置该函数返回的第二个文本对象的属性。

[tt,s] = title(t,'Clever Title','An Insightful Subtitle');
s.FontAngle = 'italic';

注意

此文本对象不包含在坐标区的 Children 属性中,它不能由 findobj 返回,也不使用为文本对象定义的默认值。

共享 x 轴标签的 Text 对象。要添加共享 x 轴标签,请设置 Text 对象的 String 属性。要更改标签外观,例如字号,请设置其他属性。例如,为 2×2 布局创建一个共享 x 轴标签,其字体为 14 磅。

t = tiledlayout(2,2);
t.XLabel.String = 'My x-Axis Label';
t.XLabel.FontSize = 14;

或者,将 TiledChartLayout 对象传递给 xlabel 函数。

xlabel(t,'My x-Axis Label','FontSize',14)

有关您可以指定的属性的完整列表,请参阅 Text 属性

注意

Text 对象不包含在坐标区 Children 属性中,因此 findobj 无法返回该对象。

共享 y 轴标签的 Text 对象。要添加共享 y 轴标签,请设置 Text 对象的 String 属性。要更改标签外观,例如字号,请设置其他属性。例如,为 2×2 布局创建一个共享 y 轴标签,其字体为 14 磅。

t = tiledlayout(2,2);
t.YLabel.String = 'My y-Axis Label';
t.YLabel.FontSize = 14;

或者,将 TiledChartLayout 对象传递给 ylabel 函数。

ylabel(t,'My y-Axis Label','FontSize',14)

有关您可以指定的属性的完整列表,请参阅 Text 属性

注意

Text 对象不包含在坐标区 Children 属性中,因此 findobj 无法返回该对象。

位置

全部展开

外部大小和位置,包括标题和轴标签等装饰元素的边距,指定为 [left bottom width height] 形式的四元素向量。向量中的值采用 Units 属性指定的单位。[0 0 1 1] 的默认值包括容器的整个内部。

  • leftbottom 元素定义从容器(通常为图窗、面板或选项卡)左下角到外部位置边界左下角之间的距离。

  • widthheight 元素是外边界尺寸。

在以下布局中,蓝色矩形表示 OuterPosition 属性,红色矩形表示 InnerPositionPosition 属性(它们具有相同的值)。

2-by-2 layout with a blue rectangle that surrounds the four axes and labels. A red rectangle surrounds the four plot boxes only.

注意

当父容器为 TiledChartLayout 对象时,设置此属性不起作用。

内部大小和位置,不包括标题和轴标签等装饰元素的边距,指定为 [left bottom width height] 形式的四元素向量。此属性等同于 Position 属性。

注意

当父容器为 TiledChartLayout 对象时,设置此属性不起作用。

内部大小和位置,不包括标题和轴标签等装饰元素的边距,指定为 [left bottom width height] 形式的四元素向量。向量中的值采用 Units 属性指定的单位。

  • leftbottom 元素定义从容器(通常为图窗、面板或选项卡)左下角到位置边界左下角之间的距离。

  • widthheight 元素是位置边界维度。对于三维视图中的坐标区,Position 属性是包围坐标区的最小矩形。

在以下布局中,蓝色矩形表示 OuterPosition 属性,红色矩形表示 InnerPositionPosition 属性(它们具有相同的值)。

2-by-2 layout with a blue rectangle that surrounds the four axes and labels. A red rectangle surrounds the four plot boxes only.

注意

当父容器为 TiledChartLayout 对象时,设置此属性不起作用。

在增加、删除或更改装饰元素时保持不变的位置属性,指定为下列值之一:

  • "outerposition" - 在添加、删除或更改装饰元素(例如标题或轴标签)时,OuterPosition 属性保持不变。如需任何位置调整,MATLAB 会调整 InnerPosition 属性。

  • "innerposition" - 在添加、删除或更改装饰元素(例如标题或轴标签)时,InnerPosition 属性保持不变。如需任何位置调整,MATLAB 会调整 OuterPosition 属性。

注意

当父容器为 TiledChartLayout 对象时,设置此属性不起作用。

位置单位,指定为此表中的一个值。

Units描述
'normalized'(默认值)相对于父容器(通常为图窗)进行归一化。图窗的左下角映射到 (0,0),右上角映射到 (1,1)
'inches'英寸。
'centimeters'厘米。
'characters'

基于默认系统字体的字符大小。

  • 字符宽度 = 字母 x 的宽度。

  • 字符高度 = 两个文本行的基线之间的距离。

'points'磅。一磅等于 1/72 英寸。
'pixels'

像素。

  • 在 Windows® 系统上,一个像素是 1/96 英寸。

  • Macintosh 系统上,一个像素是 1/72 英寸。

  • 在 Linux® 系统上,一个像素的大小由系统分辨率确定。

所有单位都是从父容器的左下角进行测量的。

此属性会影响其他属性,例如 Position 属性。如果您更改了单位,最好在完成计算后将单位恢复为默认值,以避免影响其他采用默认值的函数。

如果您在创建对象时以 Name,Value 对组的形式指定 PositionUnits 属性,则指定顺序很重要。例如,要以特定单位设置位置,则必须在 Position 属性之前设置 Units 属性。

布局选项,指定为 TiledChartLayoutOptions 对象。使用此属性将嵌套布局定位在其父布局中。例如,要将一个布局定位在另一个分块图布局中,请设置 TiledChartLayoutOptions 对象的 TileTileSpan 属性。

例如,以下代码将 layout2 定位在 layout1 的第三个图块中。

layout1 = tiledlayout(2,2);
layout2 = tiledlayout(layout1,1,3);
layout2.Layout.Tile = 3;

要使该嵌套布局占据多个图块,请将 TileSpan 属性指定为二元素向量。例如,以下代码使 layout2 占据一行两列图块。

layout2.Layout.TileSpan = [1 2];
如果填充这两个布局中的所有图块,则复合布局如下所示:

2-by-2 layout with a nested 1-by-3 layout in the second row.

如果布局不是另一个布局的子级(例如,如果它是图窗或面板的子级),则此属性为空且不起作用。

交互性

全部展开

共享数据探索工具栏,指定为 axtoolbar 函数返回的 AxesToolbar 对象。当您将鼠标悬停在布局上时,工具栏会显示在布局的右上角。

默认情况下,没有共享工具栏,每个单独的坐标区对象都有自己的工具栏。创建共享工具栏时,单个坐标区对象上的工具栏会变为隐藏。如果您不希望布局中有任何工具栏,请将此属性留空,并将每个坐标区的 AxesToolbar 对象的 Visible 属性设置为 'off'

t = tiledlayout(2,1);
ax = nexttile;
ax.Toolbar.Visible = 'off';

可见性状态,指定为 "on""off",或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 "on" 等效于 true"off" 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • "on" - 显示对象。

  • "off" - 隐藏对象而不删除它。您仍然可以访问不可见对象的属性。

回调

全部展开

自 R2022b 开始提供

网格大小更改回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。

  • 包含有效 MATLAB 表达式的字符串标量或字符向量(不推荐 App 使用)。MATLAB 在基础工作区中计算此表达式。

请注意,TileArrangement 属性设置为 "fixed" 的布局无法更改网格大小,除非该布局为空。此回调在 GridSize 属性更改后执行。如果 TileArrangement 属性设置为 "flow",然后当您添加或删除图块或调整图窗的大小时,网格大小通常会发生变化。

GridSizeChangedFcn 回调函数可以访问有关网格大小的特定信息。MATLAB 在 GridSizeChanged 对象中将此信息作为第二个参量传递给回调函数。如果您在 App 设计工具中开发 App,该参量称为 event。您可以使用圆点表示法查询对象属性。例如,event.NewGridSize 返回新网格大小。GridSizeChanged 对象不可用于指定为字符串或字符向量的回调函数。

下表列出了 GridSizeChanged 对象的属性。

属性

描述

NewGridSize

包含新网格大小的二元素向量

OldGridSize

包含先前网格大小的二元素向量

Source

执行回调的 TiledChartLayout 对象

EventName

'GridSizeChanged'

有关 GridSizeChangedFcn 回调的示例,请参阅Colorbar That Adjusts as Tiles Reflow。有关在 App 中编写回调的详细信息,请参阅App 设计工具中的回调

对象创建函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调指定为函数句柄、元胞数组或字符向量的详细信息,请参阅Create Callbacks for Graphics Objects

此属性指定要在 MATLAB 创建对象时执行的回调函数。MATLAB 将在执行 CreateFcn 回调之前初始化所有属性值。如果不指定 CreateFcn 属性,则 MATLAB 执行默认的创建函数。

对现有组件设置 CreateFcn 属性没有任何作用。

如果将此属性指定为函数句柄或元胞数组,则可以使用回调函数的第一个参量访问正在创建的对象。否则,使用 gcbo 函数访问该对象。

对象删除函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调指定为函数句柄、元胞数组或字符向量的详细信息,请参阅Create Callbacks for Graphics Objects

此属性指定在 MATLAB 删除对象时要执行的回调函数。MATLAB 在销毁对象的属性之前执行 DeleteFcn 回调。如果不指定 DeleteFcn 属性,则 MATLAB 执行默认的删除函数。

如果将此属性指定为函数句柄或元胞数组,则可以使用回调函数的第一个参量访问要删除的对象。否则,使用 gcbo 函数访问该对象。

回调执行控件

全部展开

回调中断,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

此属性确定是否可以中断运行中回调。有以下两种回调状态要考虑:

  • 运行中回调是当前正在执行的回调。

  • 中断回调是试图中断运行中回调的回调。

每次执行处理回调队列的命令时,MATLAB 都会确定回调中断行为。这些命令包括 drawnowfigureuifiguregetframewaitforpause

如果运行中回调不包含上述命令之一,则不会发生中断。MATLAB 首先完成执行运行中回调,然后执行中断回调。

如果运行中回调确实包含上述命令之一,则由运行中回调所属对象的 Interruptible 属性来确定是否发生中断:

  • 如果 Interruptible 的值为 'off',则不会发生中断。此时,由中断回调所属对象的 BusyAction 属性确定中断回调是被丢弃还是添加到回调队列中。

  • 如果 Interruptible 的值为 'on',则发生中断。下次 MATLAB 处理回调队列时,它会停止运行中回调的执行,并执行中断回调。在中断回调完成后,MATLAB 将继续执行运行中回调。

注意

回调的中断和执行在以下情况下会有不同的表现:

  • 如果中断回调是 DeleteFcnCloseRequestFcnSizeChangedFcn 回调,则无论是否存在 Interruptible 属性值都会发生中断。

  • 如果运行中回调当前正在执行 waitfor 函数,则无论是否存在 Interruptible 属性值都会发生中断。

  • 如果中断回调由 Timer 对象所有,则回调将根据调度执行,而不考虑 Interruptible 属性值。

注意

发生中断时,MATLAB 不保存属性状态或显示内容。例如,gcagcf 命令返回的对象可能会在另一个回调执行时发生改变。

回调排队,指定为 'queue''cancel'BusyAction 属性决定 MATLAB 如何处理中断回调的执行。有以下两种回调状态要考虑:

  • 运行中回调是当前正在执行的回调。

  • 中断回调是试图中断运行中回调的回调。

BusyAction 属性仅在同时满足以下两个条件时才确定回调排队行为:

在这些情况下,由中断回调所属对象的 BusyAction 属性确定 MATLAB 如何处理中断回调。以下是 BusyAction 属性的可能值:

  • 'queue' - 将中断回调放入队列中,以便在运行中回调执行完毕后进行处理。

  • 'cancel' - 不执行中断回调。

此 属性 为只读。

删除状态,以 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值形式返回。

DeleteFcn 回调开始执行时,MATLAB 会将 BeingDeleted 属性设置为 'on'BeingDeleted 属性将一直保持 'on' 设置状态,直到组件对象不再存在为止。

在查询或修改对象之前,请先检查其 BeingDeleted 属性的值,以确认它不是待删除项。

父级/子级

全部展开

父容器,指定为 FigurePanelTabTiledChartLayout 对象。

子级,以图形对象数组形式返回。使用该属性可查看子级列表,或重新排列子级顺序(通过将该属性设置为自身的置换来完成)。

不能使用 Children 属性添加或删除子级。要向此列表中添加子级,请将子图形对象的 Parent 属性设置为 TiledChartLayout 对象。

父级的 Children 属性中对象句柄的可见性,指定为下列值之一:

  • "on" - 对象句柄始终可见。

  • "off" - 对象句柄始终不可见。该选项用于防止另一函数无意中对其进行更改。将 HandleVisibility 设置为 "off" 可在执行该函数时暂时隐藏句柄。

  • "callback" - 对象句柄在回调或回调所调用的函数中可见,但在从命令行调用的函数中不可见。此选项阻止通过命令行访问对象,但允许回调函数访问对象。

如果父级的 Children 属性中未列出该对象,则通过搜索对象层次结构或查询句柄属性获取对象句柄的函数无法返回该对象。此类函数的示例包括 getfindobjgcagcfgconewplotclaclfclose 函数。

隐藏的对象句柄仍有效。将根 ShowHiddenHandles 属性设置为 "on" 以列出所有对象句柄,而不管其 HandleVisibility 属性设置如何。

标识符

全部展开

此 属性 为只读。

图形对象的类型,以 'tiledlayout' 形式返回。

对象标识符,指定为字符向量或字符串标量。您可以指定唯一的 Tag 值作为对象的标识符。如果需要访问您代码中其他位置的对象,可以使用 findobj 函数基于 Tag 值搜索对象。

用户数据,指定为任何 MATLAB 数组。例如,您可以指定标量、向量、矩阵、元胞数组、字符数组、表或结构体。使用此属性存储对象上的任意数据。

如果您在 App 设计工具中工作,请在该 App 中创建公共或私有属性以共享数据,而不是使用 UserData 属性。有关详细信息,请参阅在用 App 设计工具创建的 App 内共享数据

版本历史记录

在 R2019b 中推出

全部展开

另请参阅

|