如何格式化用plotyy制作的Matlab数字?

时间:2016-05-06 12:50:34

标签: matlab plot matlab-figure

我正在使用Matlab制作情节图,并希望使用演示文稿导出样式(文件>导出设置>导出样式>加载设置:“演示文稿”)导出它们。这通常可以很好地满足快速需求。

但是,我现在正在使用plotyy,并出现以下问题。当我选择“演示文稿导出样式”并将其应用于图形时,在某些情况下,Y轴标签会脱离图片区域。似乎Matlab没有适当地缩放所有内容以适应图形窗口。我该如何解决这个问题(尽可能简单)?

实施例

以下是上述问题的示例:

x = linspace(0,1,10);
y1 = 1000*x;
y2 = 10*x.^2;
figure; ax = plotyy(x,y1,x,y2);
ylabel(ax(1),'y_1');
ylabel(ax(2),'y_2');

现在,如果您将演示文稿导出样式应用于此,您将看到我在说什么。

我不知道它是否特定于版本:现在使用2015a。

1 个答案:

答案 0 :(得分:0)

借助excaza在this SO question的回答,我找到了一个非常简单的解决方案:

在格式化图形之前,需要将轴的ActivePostionProperty设置为outerposition。它将确保一切都保持在窗口内。这可能会使两个轴箱不对齐。然后应执行此工作示例的最后五行以使它们再次相等并在图形窗口中保持正确的拟合。

x = linspace(0,1,10);
y1 = 1000*x;
y2 = 10*x.^2;
figure;
ax = plotyy(x,y1,x,y2);
xlabel('x')
ylabel(ax(1),'y_1');
ylabel(ax(2),'y_2');

% Set `ActivePostionProperty` to `outerposition`. This will make sure
% everything fits within the window
set(ax,'ActivePositionProperty','outerposition')

% Do some formatting......
% either with GUI or code.

% It is likely that the two axes get shifted and no longer coincide. Then
% execute this part.
p1 = get(ax(1),'Position');
p2 = get(ax(2),'Position');
p = max(p1,p2);
p(3:4) = min(p1(1:2)+p1(3:4),p2(1:2)+p2(3:4))-p(1:2);
set(ax,'Position',p);