我有以下函数,它应该创建在一行内紧密间隔的子图,并在每列中按间距分布。它还允许您设置边缘的缓冲区大小:
function fill_graph()
for x=1:3
for y=1:3
ax = subplot(3,3,(x-1)*3+y);
left_buffer = .05;
right_buffer = .025;
x_pos = left_buffer+(x-1)*(1/3*(1-left_buffer-right_buffer));
width = 1/3*(1-left_buffer-right_buffer);
bottom_buffer = .1;
top_buffer = .05;
spacing=.07;
height = (1/3)*(1-2*spacing-top_buffer-bottom_buffer);
y_pos = bottom_buffer+(y-1)*(spacing+height);
set(ax,'position',[x_pos,y_pos,width,height])
if x>1
set(gca,'yTickLabel','');
ylabel('');
end
if y>1 || x~=2
xlabel('')
end
end
end
当我运行该函数时,底行图和中间行最左边的图都消失了。
我知道这可能与子图相互重叠时会消失这一事实有关,但无论我设置间距有多远,我都无法让底行出现(我唯一的方法'已经发现将底部缓冲区设置在 0.34 以上,这仅在某些时候有效)。我尝试将“位置”切换为“外部位置”,这应该使它们都不重叠,但这似乎也不起作用。
我已经看到第二个子图消失了,但是当我以这种方式(subplot('position',x_pos,y_pos,width,height)
)指定位置时,它会覆盖已经存在的图。如果我在绘图之前放置该代码,则只要发出 plot 命令,绘图就会调整大小。