gpt4 book ai didi

matlab - 在平铺布局中正确对齐子组的标签

转载 作者:行者123 更新时间:2023-12-04 08:05:59 26 4
gpt4 key购买 nike

我想使用 tiledlayout 在一个图中放置 5 个图,顶部是 2x2 的图,然后是底部跨越两列的图。应该有两组轴标签:一组用于 2x2 图,另一组用于底部图。我的 MWE 是

x = linspace(-2,2,100);
y1 = sin(x);
y2 = cos(x);
y3 = sin(x).*cos(2*x);
y4 = sin(2*x).*cos(x);
y5 = y3 + y4;

figure('PaperUnits', 'inches', 'PaperSize', [4 6], 'PaperPosition', [0 0 4 6]);
t = tiledlayout(3,2,'TileSpacing','compact','Padding','compact');

nexttile; plot(x,y1); title('y_1');
nexttile; plot(x,y2); title('y_2');
nexttile; plot(x,y3); title('y_3');
nexttile; plot(x,y4); title('y_4');

xlabel(t,'time t_\alpha')
ylabel(t,'amplitude \alpha')

nexttile([1 2]); plot(x,y5); title('y_5');

xlabel('time t_\beta')
ylabel('amplitude \beta')

saveas(gcf,'myfig.jpg')
这给了我下图:
enter image description here
我想要 amplitude \alpha ylabel 和 time t_alpha xlabel 正确对齐 2x2 图(如我的红色注释所示)。有没有办法做到这一点?
我正在使用 MATLAB R2020a。请注意 tiledlayout函数是在 R2019b 中引入的。

最佳答案

通过我在评论中提到的方法(使用“嵌套” tiledlayout )可以实现您想要的近似值。使其工作所需的步骤是:

  • 创建外部垂直布局。
  • 为嵌套 tiledlayout 保留前两行,通过询问 2×1 nexttile ,隐藏生成的轴,并创建 uipanel 在它的位置。调用 uipanel是必要的,因为 parent of a tiledlayout 不能是另一个 tiledlayout ,但它可以是 Panel .
  • 在适当的面板中绘制所有内容,并相应地应用标签。

  • x = linspace(-2,2,100);
    y1 = sin(x);
    y2 = cos(x);
    y3 = sin(x).*cos(2*x);
    y4 = sin(2*x).*cos(x);
    y5 = y3 + y4;

    hF = figure('PaperUnits', 'inches', 'PaperSize', [4 6], 'PaperPosition', [0 0 4 6]);
    tOut = tiledlayout(hF,3,1);
    hAx = nexttile(tOut, [2,1]); hAx.Visible = 'off';
    hP = uipanel(hF, 'Position', hAx.OuterPosition, 'BorderWidth', 0);
    tIn = tiledlayout(hP,2,2,'TileSpacing','compact','Padding','compact');

    nexttile(tIn); plot(x,y1); title('y_1');
    nexttile(tIn); plot(x,y2); title('y_2');
    nexttile(tIn); plot(x,y3); title('y_3');
    nexttile(tIn); plot(x,y4); title('y_4');

    xlabel(tIn,'time t_\alpha')
    ylabel(tIn,'amplitude \alpha')

    hAx = nexttile(tOut); plot(x,y5); title('y_5');

    xlabel(hAx, 'time t_\beta')
    ylabel(hAx, 'amplitude \beta')
    导致:
    enter image description here

    从这里您可以尝试调整各个 GUI 元素(布局、轴、面板)以获得更接近您想要的结果。
    我建议的一条完全不同的路线是从您的代码开始,然后使用 annotation 为前 4 个图添加标签。函数(而不是 xlabelylabel )。

    关于matlab - 在平铺布局中正确对齐子组的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66221891/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com