2013-09-24 13 views
6

Jak widać na załączonym zrzucie ekranu, wyjście EPS programu matlab powoduje cięcie etykiety po prawej stronie osi Y.Matlab odcięcie przy użyciu funkcji plotyy

Używam funkcji plotyy i drukowania do eps z: print (f1, '- depsc2', 'figure1.eps');

Próbowałem zmienić właściwość paperposition, a także właściwość paperize, i te wydają się nadal skalować z innymi przy każdej regulacji, a zatem nigdy nie mogę zwiększyć rozmiaru papieru po prawej stronie.

Ustawiłem tryb PaperPosition na ręczny.

Czy ktoś ma jakieś pomysły?

Utworzono przykładowy kod, który jest samowystarczalny i replikuje problem. Problem jest tworzony podczas zwiększania rozmiaru znaczników i czcionek. Jest to jednak niezbędne w mojej sytuacji.

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

Czy możesz podać minimalny przykład pracy, który odradza Twój problem? Z szybkim i brudnym 'plotyy' i twoim' print'-command nie mogłem dostać odciętej etykiety. – Schorsch

+0

@Schorsch Dzięki za komentarz, dodałem kod, który powie ci problem. – CptLightning

+0

Ktoś zadał podobne pytanie w Mathworks Newsgroup trzy lata temu: [link] (http://www.mathworks.com/matlabcentral/newsreader/view_thread/286282). Wydaje się, że nie było łatwego automatycznego rozwiązania tego problemu i musisz to zrobić tak, jak w odpowiedzi Luisa. – Roun

Odpowiedz

6

Zmiana położenia osi, aby im węższa:

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 

Jeśli trzeba zachować osiach stosunek, należy również zmodyfikować wysokość (numer czwarty).

+0

dzięki za pomoc, bardzo doceniane. – CptLightning

Powiązane problemy