2013-09-24 85 views
6

Như đã thấy trong ảnh chụp màn hình đi kèm, đầu ra EPS của matlab là cắt nhãn trên trục Y bên tay phải.Matlab ylabel cutoff sử dụng chức năng kiểu mẫu

Tôi đang sử dụng chức năng mẫu và in tới eps với: in (f1, '- depsc2', 'figure1.eps');

Tôi đã thử thay đổi thuộc tính paperposition, cũng như thuộc tính paperize, và chúng dường như giữ tỷ lệ với nhau ở mỗi lần điều chỉnh, và do đó tôi không bao giờ có thể tăng kích thước giấy ở bên phải.

Tôi đã đặt paperpositionmode thành thủ công.

Có ai có ý tưởng nào không?

Tôi đã tạo một số mã mẫu tự cung tự cấp và sao chép sự cố. Sự cố được tạo khi tăng kích thước dấu và kích thước phông chữ. Tuy nhiên điều này là rất cần thiết cho tình hình của tôi.

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

Bạn có thể cung cấp một ví dụ làm việc tối thiểu giúp tái tạo sự cố của bạn không? Với một "kiểu mẫu" nhanh chóng và bẩn thỉu và lệnh 'print' của bạn, tôi không thể nhận được một nhãn cắt. – Schorsch

+0

@Schorsch Cảm ơn bạn đã bình luận của bạn, tôi đã bao gồm một số mã sẽ nhân rộng vấn đề cho bạn. – CptLightning

+0

Có người đã hỏi một câu hỏi tương tự trên Mathworks Newsgroup ba năm trước: [link] (http://www.mathworks.com/matlabcentral/newsreader/view_thread/286282). Có vẻ như không có giải pháp tự động dễ dàng nào cho vấn đề này và bạn phải làm như trong câu trả lời của Luis. – Roun

Trả lời

6

Thay đổi trục vị trí để làm cho họ hẹp hơn:

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 

Nếu bạn cần phải giữ cho trục tỷ lệ, bạn cũng nên thay đổi chiều cao (số thứ tư).

+0

cảm ơn sự giúp đỡ của bạn, được đánh giá cao. – CptLightning