我建议采用不同的方法.
假设您正在绘制以下内容:
ax(1) = subplot(1,3,1);imagesc(rand(100,1),[0 1]);
ax(2) = subplot(1,3,2);imagesc(rand(100,1),[0 1]);
ax(3) = subplot(1,3,3);imagesc(rand(100,1),[0 1]);
我建议只需重置第三个子图的尺寸,该尺寸将受到颜色条的影响并拉伸图形以包含添加的颜色条.
% Get positions of all the subplot
posa = get(ax,'position');
h = colorbar;
% Reset ax(3) position to before colorbar
set(ax(3),'position',posa{3})
% Set everything to units pixels (avoids dynamic reposition)
set([ax h],'units','pix')
% Widen figure by a factor of 1.1 (tweak it for needs)
posf = get(gcf,'position');
set(gcf,'position',[posf(1:2) posf(3)*1.1 posf(4)])
结果