首页 > 解决方案 > 在 Matlab 中对 y 轴标签进行分组

问题描述

我正在 Matlab 中创建一个 3x1 的外部图。在每个外部情节中,我想要一个 5x1 内部情节。对于每个 3x1 外部图,我想要单独的 y 轴标签。我还希望每个 5x1 内部图都有自己的 y 轴标签。所有图都将具有相同的 x 轴标签。

我一直在使用Matlab的tiledlayout功能。我正在努力解决如何创建嵌套的 5x1 内部图以及如何为每个内部图提供自己独特的标签。这是我到目前为止所拥有的:

close all
f = figure;
subj_plot = tiledlayout(3,1);


% Iterate through all subject

for subj = 1:3
    nexttile
    ylabel(['\bf Subject', num2str(subj)]);
    for fing = 1:5

    end

end
xlabel('test');
subj_plot.TileSpacing = 'compact';

总体而言,该数字将是 15x1,分组为 3x1。我不知道如何设置它,以及如何使用保持在具有不同标签的图形中嵌套平铺布局图形。我该怎么做?

编辑:每个单独的 15x1 图将有两个相互重叠的图。

编辑2: 缩小尺寸的理想结构

标签: matlabplotmatlab-figure

解决方案


我没有这个功能tiledlayout(我的 Matlab 比 R2019b 旧)所以我不能准确地重现这个。我会考虑使用text而不是ylabel用于外部图,如下所示:

% define ax = get axis for each subplots in your tiled layout
ax.Units = 'pixels'; 
h = text(ax.Position(1)+ax.Position(3)/2, ax.Position(2)+ax.Position(4)/2, 'Your Outer Axis Label', 'Units', 'pixels', 'HorizontalAlignment', 'center', 'Rotation', 90);

如果重现性不是这里的问题,您当然也可以手动拖动文本。


推荐阅读