Syl*_*wia 6 matlab matlab-figure
我使用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)
Run Code Online (Sandbox Code Playgroud)
图显示完美,但是当我尝试将其保存为图像时会显示未对齐的框.
我试图使用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
Run Code Online (Sandbox Code Playgroud)
除了堆叠轴之外,您还会注意到我已将 设为ActivePositionProperty(position而不是outerposition)。当该属性设置为时, MATLAB 会自动调整轴的大小,这似乎是出现问题的主要原因。调整大小时,MATLAB 还会修改第二个轴的值,从而调整绘图部分的大小。与我的情况相比,差异很小,但效果显然非常明显。您可以使用和来修复此问题,但您必须在每次调整大小时执行此操作,这相当烦人。另一种方法是根据 调整大小,这似乎可以缓解该问题,并且是 R2015b 实现中存在的一个调整。除了窗口非常小的情况之外,这也可以修复,所以我用更通用的方法留下了我的答案。UnitsNormalizedOuterPosition[0 0 1 1][0 0.0371 1.0000 0.9599]getsetPositionplotyyplotyy