2012-08-28 36 views
5

MATLAB में एक साधारण आकृति बनाते समय और इसे पीडीएफ के रूप में सहेजते समय, परिणामी पीडीएफ फ़ाइल में एक शानदार बाउंडिंग बॉक्स होगा।MATLAB आकृति के पीडीएफ के आसपास तंग बाउंडिंग बॉक्स

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

वहाँ पीडीएफ के चारों ओर एक तंग सीमांकन बॉक्स प्राप्त करने के लिए एक आसान तरीका है (उत्पादन के अनुपात ऐसा लगता है कि वे हमेशा एक पेज एक पर में डाल दिया। से)?

उत्तर

3

आप के रूप

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'); 

छोटे सीमाओं के लिए इस प्रकार सीमांकन बॉक्स स्वरूपित कर सकते हैं, तो आप paperposition संपत्ति, उदा समायोजित कर सकते हैं

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

इस पहलू अनुपात को संशोधित करता है और एक पीडीएफ अभी भी एक (छोटे) है कि पैदा करता है सीमा। हो सकता है कि बाउंडिंग बॉक्स के आयामों को पढ़ने का कोई तरीका हो? वैसे भी, 'पेपरपॉजिशन' निश्चित रूप से दिलचस्प है। –

+0

@ निको: मैंने पहलू अनुपात और छोटी सीमाओं के लिए खाते में अपना उत्तर अपडेट किया। –

1

एक पुरानी सवाल है, लेकिन जब से गूगल मेरे लिए यह पाया पहले Mathworks मदद पृष्ठ (माफ करना कोई प्रतिष्ठा पर्याप्त पिछले करने के लिए एक टिप्पणी पोस्ट करने) के मालिक हैं मैं जवाब देंगे। वैसे भी

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

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

होना चाहिए के रूप में पहली मूल्यों gcf.Position [एक्स, वाई] स्क्रीन पर स्थान, आकार के साथ कुछ नहीं कर रहे हैं।

इसके अलावा मैटलैब (आर) एक जवाब देता है, है, खासकर यदि आप नहीं चाहते/आंकड़ा आकार बदलने के लिए की जरूरत है: 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)];