如何在含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
相关产品推荐
相关产品推荐

