You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在含tiledlayout的figure中查找并访问sgtitle?

解决Matlab中含tiledlayout的Figure访问sgtitle的问题

核心原因

使用tiledlayout时,全局标题(sgtitle)不再是Figure的直接子对象,也不会出现在tiledlayout的Children列表中,而是作为tiledlayout对象的Title属性存在。

具体访问方法

方法1:直接保存sgtitle句柄

创建全局标题时直接赋值给变量,后续直接调用:

fh_wo_sgtitle_handle = figure;
tl = tiledlayout;
nexttile
plot(rand(100,1))
nexttile
plot(rand(100,1))
title('下方绘图')
% 保存sgtitle句柄
sgt = sgtitle('这是一个测试');

% 后续操作示例:修改标题颜色
sgt.Color = 'red';

方法2:通过tiledlayout对象获取

若未提前保存句柄,可先获取tiledlayout对象,再访问其Title属性:

% 获取当前figure中的tiledlayout对象
tl = findobj(fh_wo_sgtitle_handle, 'Type', 'TiledChartLayout');
% 获取全局标题句柄
sgt = tl.Title;

% 后续操作示例:调整标题字体大小
sgt.FontSize = 14;

方法3:用findall精准查找

通过指定类型和标签(Tag)定位sgtitle,此时它的类型为Text,标签为'Title':

sgt = findall(fh_wo_sgtitle_handle, 'Type', 'Text', 'Tag', 'Title');

验证代码

将上述方法整合到示例中,可直接验证效果:

% 无法在Children列表找到sgtitle的figure
fh_wo_sgtitle_handle = figure;
tl = tiledlayout;
nexttile
plot(rand(100,1))
nexttile
plot(rand(100,1))
title('下方绘图')
sgtitle('这是一个测试')

% 方法2:通过tiledlayout获取
tl = fh_wo_sgtitle_handle.Children(1); % figure的第一个子对象即为tiledlayout
sgt = tl.Title;
disp(sgt);

% 方法3:findall查找
sgt_find = findall(fh_wo_sgtitle_handle, 'Type', 'Text', 'Tag', 'Title');
disp(sgt_find);

执行后会输出sgtitle的句柄,后续可对其进行样式修改等操作。

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 09:22:09