当将图形保存为eps文件时,Matlab会截断色标标签。

4

我有一个使用contourf制作的图像,并带有一个色条。我的大部分图像都很好,但当色条上的值是10^{-3}这个数量级时,要么色条显示0.005等数字,要么在顶部显示x10^{-3}。

在两种情况下,标签的一部分会被割掉-要么是x10^{-3}中的3,要么是0.005中的5的一半。

我可以使用

set(gca, 'ActivePositionProperty', 'OuterPosition')

对于屏幕上的图形,我需要将其保存为eps格式。但是当我这样做时,3(或5)再次被裁剪了!如果我手动拉动窗口右下角使其更大,则也可以解决此问题。但是这会更改坐标轴标签等的大小,与绘图本身相比不同于我的所有其他图形,即我没有重新调整大小的图形。有什么建议吗?
3个回答

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文档页面。

希望这可以帮助您!


2
前面的建议部分正确。这是我所做的事情:
  1. set both, figure and paper units, to the same measure (figure has pixels, not points!)

    set(gcf,'Units','points')
    set(gcf,'PaperUnits','points') 
    
  2. do the same as suggested before:

    size = get(gcf,'Position');
    size = size(3:4);
    set(gcf,'PaperSize',size)
    
  3. the thing now is, that it might be shifted off the paper, as in my case, so put it back on

    set(gcf,'PaperPosition',[0,0,size(1),size(2)])
    
我不确定 [0,0] 的偏移量是多少,但是单点截断是什么意思 :)

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接