MATLAB如何仅将2x2子图的共享坐标轴标题设置为粗体
实现方案
完全可以实现,推荐使用MATLAB R2021a原生支持的tiledlayout分块布局功能,无需手动计算文本位置,自适应效果更好,操作步骤如下:
核心实现逻辑
- 先创建2×2分块布局,预留足够边距放置共享标题
- 依次创建4个子图,单独设置每个子图的x、y轴标签(默认非粗体,无需额外配置)
- 分别为对应行、列的子图块设置共享标题,单独指定
FontWeight属性为bold即可实现仅共享标题加粗
完整可运行代码示例
% 1. 创建2行2列分块布局,调整间距适配共享标题 t = tiledlayout(2,2, 'TileSpacing','compact', 'Padding','loose'); % 2. 依次创建4个子图,设置各自独立的轴标签(默认常规非粗体) % 子图(1,1) nexttile plot(rand(10,1)) xlabel('子图1 x轴标签') ylabel('子图1 y轴标签') % 子图(1,2) nexttile plot(rand(10,1)) xlabel('子图2 x轴标签') ylabel('子图2 y轴标签') % 子图(2,1) nexttile plot(rand(10,1)) xlabel('子图3 x轴标签') ylabel('子图3 y轴标签') % 子图(2,2) nexttile plot(rand(10,1)) xlabel('子图4 x轴标签') ylabel('子图4 y轴标签') % 3. 设置行方向共享标题(仅共享标题加粗) % 第一行共享标题,覆盖子图(1,1)、(1,2) title(t, '第一行共享标题', 'FontWeight','bold', 'TileIndex',[1,2]); % 第二行共享标题,覆盖子图(2,1)、(2,2) title(t, '第二行共享标题', 'FontWeight','bold', 'TileIndex',[3,4]); % 4. 设置列方向共享标题(仅共享标题加粗) % 第一列共享标题,覆盖子图(1,1)、(2,1) ylabel(t, '第一列共享标题', 'FontWeight','bold', 'TileIndex',[1,3]); % 第二列共享标题,覆盖子图(1,2)、(2,2) ylabel(t, '第二列共享标题', 'FontWeight','bold', 'TileIndex',[2,4]);
替代方案(兼容subplot写法)
如果你已经用subplot完成了子图绘制,也可以通过annotation添加文本框实现共享标题,手动调整位置即可:
% 示例:添加第一行共享标题 annotation('textbox', [0.3, 0.92, 0.4, 0.05], ... 'String','第一行共享标题', ... 'FontWeight','bold', ... 'EdgeColor','none', ... 'HorizontalAlignment','center');
可根据实际画布尺寸调整annotation的位置参数,列共享标题添加'Rotation',90属性即可实现竖排显示。
内容的提问来源于stack exchange,提问作者user15791858
相关产品推荐
相关产品推荐

