2011-05-08 210 views
3

我有一個圖,我想調整大小,然後打印成PDF格式。只要我不調整數字也大幅 使用類似MATLAB:正確調整圖形的大小

set(hFig, 'PaperUnits', 'centimeters') 
set(hFig, 'PaperSize', [x_B x_H]); 

工作。如果我降低高度,那麼xlabel會在某些點移出圖形。我已經搜索了很多,但只找到了一個解決方案來手動調整基本軸對象

scalefactor = 0.96; 
movefactor = 0.82; 
hAx = get(gcf,'CurrentAxes'); 
g = get(hAx,'Position'); 
% 1=left, 2=bottom, 3=width, 4=height 
g(2) = g(2) + (1-movefactor)/2*g(4); 
g(4) = scalefactor*g(4); 
set(hAx,'Position',g); 

,因爲我必須手動調整兩個因素,我不喜歡這種方式。

在打印之前,我將所有文本對象的「解釋器」設置爲「膠乳」(如果這是關注的話)。 印刷使用

print(hFig, '-dpdf', '-loose', 'test.pdf'); 

我希望通過「-loose」鬆開邊框實現。任何幫助,高度讚賞!

編輯: 似乎真的是解釋器(無,tex,乳膠)在這起作用。我得到了這裏的這篇文章的啓發(http://stackoverflow.com/questions/5150802/how-to-save-plot-into-pdf-without-large-margin-around),並提出了這種解決方案:

tightInset = get(gca, 'TightInset'); 
position(1) = tightInset(1); 

position(3) = 1 - tightInset(1) - tightInset(3); 
if strcmpi(x_Interpreter,'latex') 
    position(2) = tightInset(2)+ 1*tightInset(4); 
    position(4) = 1 - tightInset(2) - 2*tightInset(4); 
else 
    position(2) = tightInset(2)+ 0*tightInset(4); 
    position(4) = 1 - tightInset(2) - 1*tightInset(4); 
end 
set(gca, 'Position', position); 
+0

您可以發佈一個最小的非工作示例,以便我們可以重現您的錯誤? – abcd 2011-05-08 13:12:21

+0

您是否嘗試過先調整大小,然後設置軸等? – Crowley 2011-05-09 09:56:11

+0

值得注意的是,「打印」命令的行爲可能取決於您的顯示器分辨率設置(至少在Windows下的某些版本的MATLAB上)。這在試圖打印大圖像時尤其明顯。當我準備印刷/出口數據時,我傾向於明確指定尺寸以避免頭痛。 – 2011-05-09 15:31:51

回答

1

這可能無法完全解決您的問題(它可能只是幫助清理您的代碼),但我發現文件交換中的fig代碼很有幫助:它可以讓您輕鬆設置數字的確切大小而不會使用空格。