2012-07-10 43 views
3

我試圖使Matlab,7.10.0.499(R2010a),寫出一個數字使用print eps,但它不斷裁剪的軸標籤無論紙張大小我將該數字設置爲,除非我將其設置爲A3。Matlab打印數字到eps一貫削減的軸標籤

這是一個PNG來說明問題(雖然我明白,PNG的出來不同的渲染管道)。

enter image description here

產生該圖的代碼是:

figure, 
set(gcf, 'renderer', 'painters'); 

loglog(p_m_tt, p_fa_tt, 'k-', 'LineWidth', 2); hold on; 
loglog(p_m_oo, p_fa_oo, 'k--', 'LineWidth', 2); hold on; 
loglog(p_m_ot, p_fa_ot, 'k-.', 'LineWidth', 3); hold on; 
fontSize = 9; 

l = legend('Cam1-Cam1', 'Cam2-Cam2', 'Cam2-Cam1', ... 
    'Location', 'NorthEast'); 

fontSize = 20; 
xlabel('$P_{fa}$', 'fontsize', fontSize); 
ylabel('$P_{m}$', 'fontsize', fontSize); 

set(gca, 'XMinorTick', 'off', 'YMinorTick', 'off', 'YGrid', 'on', 'XGrid', 'on'); 
set(gcf, 'PaperPositionMode', 'auto'); 
set(gca, 'XTick', [0.00001 0.0001 0.001 0.01 0.1 1]); 
set(gca, 'MinorGridLineStyle', 'none'); 

set(gca, 'FontSize', fontSize); 
set(gcf, 'defaultAxesFontName', 'Times New Roman'); 

axis square; 

X = 13; 
Y = 13; 
xMargin = 0.25;    %# left/right margins from page borders 
yMargin = 0.25;    %# bottom/top margins from page borders 
xSize = X - 2*xMargin;  %# figure size on paper (widht & height) 
ySize = Y - 2*yMargin; 

set(gcf, 'PaperUnits', 'centimeters'); 
set(gcf, 'PaperSize', [X Y]); 
set(gcf, 'PaperPosition', [0 0 xSize ySize]); 
print('-depsc2', f); 

回答

1

我把你的代碼並運行它(更換變量繪製的虛擬數據,當然)和加載在EPS插畫家,它出來就好了。你使用的是哪個版本的matlab?另外,爲了以防萬一,我修改了一些代碼,因爲它之前不會運行,因爲變量「f」沒有定義,所以我包含代碼和我得到的一個示例:

f=figure; 
set(gcf, 'renderer', 'painters'); 

p_m_tt=10e-4*0:0.001:1; 
p_m_oo=p_m_tt; 
p_m_ot=p_m_oo; 
p_fa_tt=rand(size(p_m_tt)); 
p_fa_oo=rand(size(p_m_tt)); 
p_fa_ot=rand(size(p_m_tt)); 
loglog(p_m_tt, p_fa_tt, 'k-', 'LineWidth', 2); hold on; 
loglog(p_m_oo, p_fa_oo, 'k--', 'LineWidth', 2); hold on; 
loglog(p_m_ot, p_fa_ot, 'k-.', 'LineWidth', 3); hold on; 

l = legend('Cam1-Cam1', 'Cam2-Cam2', 'Cam2-Cam1', ... 
    'Location', 'NorthEast'); 

fontSize = 20; 
xlabel('$P_{fa}$', 'fontsize', fontSize); 
ylabel('$P_{m}$', 'fontsize', fontSize); 

set(gca, 'XMinorTick', 'off', 'YMinorTick', 'off', 'YGrid', 'on', 'XGrid', 'on'); 
set(gcf, 'PaperPositionMode', 'auto'); 
set(gca, 'XTick', [0.00001 0.0001 0.001 0.01 0.1 1]); 
set(gca, 'MinorGridLineStyle', 'none'); 

set(gca, 'FontSize', fontSize); 
set(gcf, 'defaultAxesFontName', 'Times New Roman'); 

axis square; 

X = 13; 
Y = 13; 
xMargin = 0.25;    %# left/right margins from page borders 
yMargin = 0.25;    %# bottom/top margins from page borders 
xSize = X - 2*xMargin;  %# figure size on paper (widht & height) 
ySize = Y - 2*yMargin; 

set(gcf, 'PaperUnits', 'centimeters'); 
set(gcf, 'PaperSize', [X Y]); 
set(gcf, 'PaperPosition', [0 0 xSize ySize]); 
print('-depsc2', f,'figure2.eps'); 

enter image description here

+0

謝謝,我正在運行7.10.0.499(R2010a),這讓我感到困惑。 – Maurits 2012-07-10 18:59:32

+0

我在7.14.0.739(R2012a 64位)中嘗試了上述所有內容,也許可以嘗試通過修改「位置」屬性來使「y標籤」更接近情節。 – Zegpi 2012-07-11 01:37:57

+0

不起作用我害怕,每次都在調整裁剪邊框,以保持切片的部分標籤。 – Maurits 2012-07-12 09:54:08

1

使用-loose選項和打印,使MATLAB不裁剪。有關詳細信息,請參閱打印幫助文件。

+1

爲什麼downvote? – Dominik 2015-12-08 15:10:26

+0

這個答案實際上可能是最好的。它阻止了我的數字被裁剪。然後我不得不在inkscape中編輯它們,但至少它們不會被切斷。 – Veridian 2016-04-12 22:30:03

1

而不是修改圖PaperPosition也可以修改軸position屬性。當前的設置可以通過檢索:

get(gca, 'position') 

ANS =

0.1300 0.1300 0.7750 0.7750 

這些編撰[left bottom width height]。然後通過增加前兩個數字並減少後兩個來增加邊距:

​​