如何减少matlab和subaxis中子图的边界并不起作用

时间:2012-11-20 16:54:56

标签: matlab matlab-figure

我已经编写了一个GUI,它提供了不同大小的matlab子图,我正在寻找一种通用的方法来将子图挤压在一起。 Subaxis适用于垂直间距,但不影响水平间距。

将它们挤在一起最简单的方法是什么? An example of one of the output figures它是在for循环中使用以下代码生成的

 subaxis (1+ceil(max(zindex)/5),5,5+i, 'Padding', 0, 'Margin', 0,'SpacingHoriz',0.0001,'SpacingVert',0.009);

1 个答案:

答案 0 :(得分:2)

看起来您的图形尺寸与您拥有的图形数量不同。如果您定义图形大小,则Subaxis效果最佳,您应该根据您拥有的图形数量来选择宽高比。

在示例中,您有13 x 5个子图,但您的图的宽高比更像是7:13。因此,垂直图是靠近在一起的,但是有很多水平的白色空间。

在绘图之前,请尝试定义您的数字:

nRows=13;
nCols=5;
PlotWidth=3;  %This is your Plot width in cm. 
FigW=nCols*FigWidth;
FigH=nRows*FigWidth;   %Note: I'm assuming the plots are square
Figure1=figure(1);clf;
set(Figure1,'PaperUnits','centimeters',...
      'PaperSize',[FigW FigH],...
      'PaperPosition',[0,0,FigW,FigH],...
      'Units','centimeters','Position',[1,9,FigW,FigH]);

看看你的数字间距是否更好。一些注意事项,如果你想使用'英寸'而不是厘米那么好。另外,我的纸张图上没有任何边距(定义纸张尺寸和纸张位置对导出很有用)。如果您想要保证金,您可以尝试以下方式:

Mgn=1;
set(Figure1,'PaperUnits','centimeters',...
      'PaperSize',[FigW+2*Mgn FigH+2*Mgn],...
      'PaperPosition',[Mgn,Mgn,FigW,FigH],...
      'Units','centimeters','Position',[1,9,FigW,FigH]);

然后,您可以使用matlab的print命令将其导出为您选择的格式。