Matlab打印图形可以持续切割轴标签

时间:2012-07-10 15:04:57

标签: matlab plot

我正在尝试制作Matlab,7.10.0.499(R2010a),使用print写出一个数字到eps,但无论我设置的数字是什么纸张大小,它都会保留轴标签的裁剪,除非我把它变成A3。

这是一个说明问题的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);

3 个答案:

答案 0 :(得分:2)

在打印时使用-loose选项,以便matlab不会裁剪它。有关详细信息,请参阅打印帮助文件。

答案 1 :(得分:1)

我拿了你的代码并运行它(当然更换变量以绘制虚拟数据)并在插图画家中加载eps,它就出来了。您使用的是哪个版本的matlab?

另外,为了以防万一,我确实稍微修改了代码,因为之前没有运行,因为变量“f”没有定义,我包括代码和我得到的一个例子:< / p>

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

答案 2 :(得分:1)

除了修改图PaperPosition之外,还可以修改轴position属性。可以通过以下方式检索当前设置:

get(gca, 'position')

ans =

0.1300    0.1300    0.7750    0.7750

这些编纂为[left bottom width height]。然后通过增加前两个数字并减少后两个数来增加边距:

set(gca, 'position', [.15, .15, .74, .74]);