2013-09-24 63 views
6

从附录的屏幕截图可以看出,matlab的EPS输出是切割右侧Y轴上的标签。使用plotyy函数的Matlab ylabel截断

我使用的是plotyy函数,并用eps打印到: print(f1,' - depsc2','figure1.eps');

我试过改变paperposition属性以及纸张大小属性,而且这些似乎在每次调整时都会与其他纸张保持缩放比例,因此我无法在右侧获得纸张大小的增加。

我已将paperpositionmode设置为手动。

有没有人有任何想法?

我已经创建了一些自足的示例代码并复制了该问题。 增加刻度和字体大小时会产生问题。然而,这对我的情况至关重要。

close all; 

% example data: 
x = 0:0.01:4; 
y1 = 5*sin(2*pi*x+0.1) + 20; 
y2 = 0.09*sin(2*pi*x); 

tickfontsize = 18; 
labelfontsize = 20; 

% begin figure: 
f1 = figure(1); 
[ax, h1, h2 ] = plotyy(x,y1,x,y2) 

% axis labels and font size: 
set(get(ax(2),'Ylabel'),'String','Test1') ; 
set(get(ax(1),'Ylabel'),'String','test2') ; 
set(get(ax(1),'Ylabel'),'FontSize',labelfontsize) ; 
set(get(ax(2),'Ylabel'),'FontSize',labelfontsize) ; 

% left hand side ticks: 
set(ax(1),'YLim',[6 10]); 
set(ax(1),'YTick',[6:1:10]); 
set(ax(1),'FontSize',tickfontsize); 

% right hand side ticks: 
set(ax(2),'YLim',[-0.13 0.14]); 
set(ax(2),'YTick',[-0.1:0.05:0.1]); 
set(ax(2),'FontSize',tickfontsize); 

%print figure to eps: 
print(f1,'-depsc2', './simpleoutput.eps'); 

Screenshot of EPS output

+0

您能提供一个最小化的工作示例来重现您的问题吗?有了一个快速而又脏乱的'plotyy'和你的'print'命令,我无法得到一个切断标签。 – Schorsch

+0

@Schorsch感谢您的评论,我已经包含了一些代码,可以为您复制问题。 – CptLightning

+0

三年前有人在Mathworks新闻组上提出了类似的问题:[link](http://www.mathworks.com/matlabcentral/newsreader/view_thread/286282)。看来这个问题没有简单的自动解决方案,你必须按照路易斯的回答来做。 – Roun

回答

6

更改轴的位置,使它们更窄:

set(ax(1),'Position', [0.13 0.11 0.775-.08 0.815]); 
set(ax(2),'Position', [0.13 0.11 0.775-.08 0.815]); 
% Original position was [0.13 0.11 0.775 0.815] 
% Applied change in width: "-.08". Choose as desired 

如果你需要保持轴比,你也应该修改高度(第四号)。

+0

感谢您的帮助,非常感谢。 – CptLightning