我已经编写了一个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);
答案 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命令将其导出为您选择的格式。