gpt4 book ai didi

MATLAB:保存为图后 plotyy 中未对齐的框

转载 作者:太空宇宙 更新时间:2023-11-03 19:36:11 25 4
gpt4 key购买 nike

我使用 plotyy 将两个图放在一个图中:

f = figure('Color','white');
[ax,p1,p2] = plotyy(xx, yy1, xx, yy2);
ylabel(ax(1),'Phase','FontSize',18);
ylabel(ax(2),'Spectrum','FontSize',18);
set(ax,{'ycolor'},{'k';'k'});
set(p1,'LineWidth',2,'Color',[0.4940,0.1840,0.5560]);
set(p2,'LineWidth',2,'Color','red');
xlabel(ax(1),['Frequency [THz]'],'FontSize',18);
set(ax,'FontSize',14)

图形显示完美,但当我尝试将其另存为图形时,会出现类似未对齐框的情况。

incorrectly saved figure

我尝试使用 linkaxes,但没有结果。

最佳答案

plotyy一直是我最喜欢的 MATLAB 函数之一,让人又爱又恨。这是一个非常有用的功能,我似乎总是遇到错误,以至于我已经完全停止使用它,转而只堆叠两个(或更多)轴对象并分别绘制它们。然后,您可以将“子”轴的 Position 属性设置为与您的主轴相同,它们将很好地堆叠。

一个功能示例:

xx = linspace(-15,15,100);
yy1 = sin(xx);
yy2 = cos(xx);
f = figure('Color','white');

ax(1) = axes('Parent', f);
ax(2) = axes('Parent', f, 'Color', 'none', 'XTick', [], 'YAxisLocation', 'right');

p1 = plot(ax(1), xx, yy1);
hold(ax(2), 'on'); % Hold to preserve our axes properties set above
p2 = plot(ax(2), xx, yy2);
hold(ax(2), 'off');

ylabel(ax(1),'Phase','FontSize',18);
ylabel(ax(2),'Spectrum','FontSize',18);
set(ax,{'ycolor'},{'k';'k'});
set(p1,'LineWidth',2,'Color',[0.4940,0.1840,0.5560]);
set(p2,'LineWidth',2,'Color','red');
xlabel(ax(1),'Frequency [THz]','FontSize',18);
set(ax,'FontSize',14)

set(ax, 'ActivePositionProperty', 'position'); % Resize based on position rather than outerposition
set(ax(2), 'Position', get(ax(1), 'Position')); % Set last to account for any annotation changes

除了堆叠轴,您还会注意到我已将 ActivePositionProperty 设置为 position(而不是 outerposition)。 MATLAB resizes axes automaticallyUnits 属性设置为 Normalized 时,这似乎是出现问题的主要原因。在调整大小时,MATLAB 还会修改第二个轴的 OuterPosition 值,从而导致它调整绘图部分的大小。 [0 0 1 1][0 0.0371 1.0000 0.9599] 在我的例子中差别很小,但效果显然非常明显。您可以使用 getset要解决此问题,但您必须在每次调整大小时都这样做,这很烦人。另一种方法是根据 Position 调整大小,这似乎可以缓解这个问题,并且是 plotyy 的 R2015b 实现中存在的一个调整。这也修复了 plotyy,除了窗口非常小的情况,所以我用更通用的方法留下了我的答案。

关于MATLAB:保存为图后 plotyy 中未对齐的框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34384294/

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