2012-08-28 31 views
5

Khi tạo một hình đơn giản trong MATLAB và lưu nó dưới dạng PDF, tệp PDF kết quả sẽ có hộp giới hạn sang trọng.Hộp giới hạn chặt chẽ xung quanh PDF của hình MATLAB

plot(1,1,'x') 
print(gcf, '-dpdf', 'test.pdf'); 

(Từ tỷ số giữa đầu ra có vẻ như họ luôn đặt ở trên một Một trang.)

Có một cách đơn giản để có được một khung giới hạn chặt chẽ xung quanh PDF?

Trả lời

3

Bạn có thể định dạng khung giới hạn như sau

figure(1) 
hold on; 
plot(1,1,'x') 

ps = get(gcf, 'Position'); 
ratio = (ps(4)-ps(2))/(ps(3)-ps(1)) 
paperWidth = 10; 
paperHeight = paperWidth*ratio; 


set(gcf, 'paperunits', 'centimeters'); 
set(gcf, 'papersize', [paperWidth paperHeight]); 
set(gcf, 'PaperPosition', [0 0 paperWidth paperHeight]); 


print(gcf, '-dpdf', 'test2.pdf'); 

Đối với biên giới nhỏ hơn, bạn có thể điều chỉnh paperposition tài sản, ví dụ

set(gcf, 'PaperPosition', [-0.5 -0.5 paperWidth+0.5 paperHeight+0.5]); 
+0

này sửa đổi tỉ lệ khung hình và tạo ra một PDF mà vẫn có một (nhỏ hơn) biên giới. Có lẽ có một cách để đọc ra các kích thước của hộp giới hạn? Dù sao, 'PaperPosition' chắc chắn là thú vị. –

+0

@Nico: Tôi đã cập nhật câu trả lời cho tài khoản cho tỷ lệ cỡ ảnh và đường viền nhỏ hơn. –

1

Câu hỏi cũ, nhưng tôi sẽ trả lời vì Google đã tìm thấy điều này cho tôi trước trang trợ giúp riêng của Mathworks (Xin lỗi, không đủ uy tín để đăng nhận xét trước đó). Dù sao

ratio = (ps(4)-ps(2))/(ps(3)-ps(1)) 

nên

ratio = ps(4)/ps(3); 

như các giá trị đầu tiên gcf.Position là [x, y] Vị trí trên màn hình, không có gì để làm với kích thước.

Cũng Matlab (R) đưa ra một câu trả lời, đặc biệt là nếu bạn không muốn/cần phải thay đổi kích thước hình: https://se.mathworks.com/help/matlab/creating_plots/save-figure-with-minimal-white-space.html

fig = gcf; 
fig.PaperPositionMode = 'auto' 
fig_pos = fig.PaperPosition; 
fig.PaperSize = [fig_pos(3) fig_pos(4)]; 
Các vấn đề liên quan