将图形保存为eps文件时,Matlab会切断色彩映射标签

时间:2012-01-03 17:30:42

标签: matlab matlab-figure

我有一个使用带有颜色条的contourf生成的图形。我的大多数情节都很好,但是当颜色条上的值为10^{-3}时,数字0.005等由颜色条写入,或者x10^{-3}写在顶部。

在这两种情况下,标签的一部分都会被切断 - 3中的x10^{-3}50.005的一半。

我可以使用

解决这个问题
set(gca, 'ActivePositionProperty', 'OuterPosition')

屏幕上的数字,但我需要以eps格式保存。当我这样做时,3(或5)再次被切断!

如果我手动拉动图窗口的右下角使其变大,我也可以解决此问题。但是这会改变轴标签等的大小,与绘图本身相比,因此它们与我的所有其他数字不同,即我没有调整大小的数字。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

Matlab对图形使用两种尺寸:屏幕尺寸(Position图形属性)和PaperSize。前者用于在屏幕上显示,后者用于打印或导出为.fig以外的图像格式。我怀疑这是你问题的根源。

以下是您可以尝试的内容:

size = get(gcf,'Position');
size = size(3:4); % the last two elements are width and height of the figure
set(gcf,'PaperUnit','points'); % unit for the property PaperSize
set(gcf,'PaperSize',size);

这会将要导出到.eps的“纸张”的大小设置为屏幕上显示的数字大小。

如果这不起作用,您可以尝试使用PaperSize或其他“纸张”相关属性。 Figure Properties文档页面提供了有关属性的更多信息。

希望这有帮助!

答案 1 :(得分:2)

前一个建议部分正确。这是我做的:

  1. 将图形和纸张单位设置为相同的度量(图中有像素,而不是点!)

    set(gcf,'Units','points')
    set(gcf,'PaperUnits','points') 
    
  2. 按照之前的建议做同样的事情:

    size = get(gcf,'Position');
    size = size(3:4);
    set(gcf,'PaperSize',size)
    
  3. 现在的事情是,它可能会从纸张上移开,就像我的情况一样,所以把它放回去

    set(gcf,'PaperPosition',[0,0,size(1),size(2)])
    
  4. 我不确定[0,0]的偏移量,但是单点切断的是什么:)

答案 2 :(得分:0)

尝试将文件保存到 filename.eps

set(gcf,'Units','points')
set(gcf,'PaperUnits','points')
size = get(gcf,'Position');

size = size(3:4);
set(gcf,'PaperSize',size)
set(gcf,'PaperPosition',[0,0,size(1),size(2)])

print(gcf,'filename','-depsc','-loose'); % Save figure as .eps file