Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将图形保存为eps文件时,Matlab会切断颜色贴图标签_Matlab_Matlab Figure - Fatal编程技术网

将图形保存为eps文件时,Matlab会切断颜色贴图标签

将图形保存为eps文件时,Matlab会切断颜色贴图标签,matlab,matlab-figure,Matlab,Matlab Figure,我有一个使用contourf和颜色条生成的图形。我的大多数绘图都很好,但是当颜色条上的值的顺序为10^{-3}时,数字0.005等由颜色条写入,或者x10^{-3}写入顶部 在这两种情况下,标签的一部分被切断-要么是x10^{-3}中的3,要么是0.005中的5的一半 我可以使用 set(gca, 'ActivePositionProperty', 'OuterPosition') 用于屏幕上的数字,但我需要以eps格式保存它。执行此操作时,3(或5)再次被切断 如果我手动拉动figure窗口

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

在这两种情况下,标签的一部分被切断-要么是
x10^{-3}
中的
3
,要么是
0.005
中的
5
的一半

我可以使用

set(gca, 'ActivePositionProperty', 'OuterPosition')
用于屏幕上的数字,但我需要以eps格式保存它。执行此操作时,
3
(或
5
)再次被切断

如果我手动拉动figure窗口的右下角使其变大,我也可以解决这个问题。但这会改变坐标轴标签等的大小,与绘图本身相比,这样它们就不同于我的所有其他图形,即我不调整大小的图形


有什么建议吗?

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

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

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
或其他与“纸张”相关的属性。文档页面提供了有关属性的更多信息


希望这有帮助

前一个建议部分正确。以下是我所做的:

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

  • 按照前面的建议执行以下操作:

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

    set(gcf,'PaperPosition',[0,0,size(1),size(2)])
    

  • 我不确定[0,0]的偏移量,但单点截断是什么:)

    尝试将文件保存到文件名。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
    
    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