我有一个使用带有颜色条的contourf生成的图形。我的大多数情节都很好,但是当颜色条上的值为10^{-3}
时,数字0.005
等由颜色条写入,或者x10^{-3}
写在顶部。
在这两种情况下,标签的一部分都会被切断 - 3
中的x10^{-3}
或5
中0.005
的一半。
我可以使用
解决这个问题set(gca, 'ActivePositionProperty', 'OuterPosition')
屏幕上的数字,但我需要以eps格式保存。当我这样做时,3
(或5
)再次被切断!
如果我手动拉动图窗口的右下角使其变大,我也可以解决此问题。但是这会改变轴标签等的大小,与绘图本身相比,因此它们与我的所有其他数字不同,即我没有调整大小的数字。
有什么建议吗?
答案 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)
前一个建议部分正确。这是我做的:
将图形和纸张单位设置为相同的度量(图中有像素,而不是点!)
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)])
我不确定[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