10

我在一个图中绘制了两个子图(2x1)。我想删除两个子图之间的所有间距,并删除顶部子图的 xlable 和 xlabel 刻度。另外,我正在尝试删除子图之外的所有间距。我试试

set(gca, 'LooseInset', get(gca,'TightInset'))

但它不起作用。现在我要手动删除这些边距和标签,我需要处理 60 个数字,而手动完成所有这些操作非常耗时。有什么更好的方法吗?谢谢。

我也尝试了 subtightplot,它有助于减少所有边距,但 xlabel 和 ylabel 也被削减

margins=[0 0];
t = 0:0.01:10;
y1 = sin(t);
y2 = cos(t);
h1 = subtightplot(2,1,1, margins);
plot(t, y1);
ystr = {'sin(x)','(dimensionless)'}
hy1 = ylabel(ystr);
set(gca, 'fontsize', 14);
set(hy1, 'fontsize', 14);
set(gca, 'XTickLabel', [],'XTick',[])

h2 = subtightplot(2,1,2,margins);
plot(t, y2, 'r-o');
hx2=xlabel('frequency');
hy2=ylabel('amplitude');
set(gca, 'fontsize', 14);
set(hx2, 'fontsize', 14);
set(hy2, 'fontsize', 14);

我也尝试了 subplot_tight 但它更糟糕

4

1 回答 1

7

您可以使用FEX 中的subplot_tightsubtightplot。要删除所有 x-tick 和标签,请使用:

set(gca, 'XTickLabel', [],'XTick',[])

在适当的子图中...

编辑:

由于您确实想要包含标签等,因此您可以使用以下position句柄axes

t = 0:0.01:10;
y1 = sin(t);
y2 = cos(t);


left= 0.15;
bottom1=0.5;
bottom2=0.05;
width=0.8;
height=0.45; % which is also bottom1-bottom2

axes('Position',[left bottom1 width height]);
plot(t, y1);
ystr = {'sin(x)','(dimensionless)'}
hy1 = ylabel(ystr);
set(gca, 'fontsize', 14);
set(hy1, 'fontsize', 14);
set(gca, 'XTickLabel', [],'XTick',[])


axes('Position',[left bottom2 width height])
plot(t, y2, 'r-o');
hx2=xlabel('frequency');
hy2=ylabel('amplitude');
set(gca, 'fontsize', 14);
set(hx2, 'fontsize', 14);
set(hy2, 'fontsize', 14);

在此处输入图像描述

于 2013-05-07T03:16:43.843 回答