最小示例:

[x,y,z] = peaks(50);
figure;
subplot(5,1,1:4);
pcolor(x,y,z);
shading flat;
colorbar;
subplot(5,1,5);
plot(x(end/2,:), z(end/2,:));

在这个例子中,我想让较低的子块显示沿y=0的峰值横截面,并让绘图在与pcolor子块相同的位置结束,这样x刻度就在相同的位置上事实上,我不需要复制的X轴。所以,
如何重新缩放较低的子块,以使右极限与上一个绘图部分的右极限相匹配(最好使色条可以在不破坏对齐的情况下打开/关闭)
(仅供参考,我可以使用learned命令,然后在第二步中获得正确的缩放行为)

最佳答案

您可以通过更改Position属性将第二个子块的宽度设置为第一个子块的宽度。

[x,y,z] = peaks(50);
figure;
ah1 = subplot(5,1,1:4); %# capture handle of first axes
pcolor(x,y,z);
shading flat;
colorbar;
ah2 = subplot(5,1,5); %# capture handle of second axes
plot(x(end/2,:), z(end/2,:));

%# find current position [x,y,width,height]
pos2 = get(ah2,'Position');
pos1 = get(ah1,'Position');

%# set width of second axes equal to first
pos2(3) = pos1(3);
set(ah2,'Position',pos2)

然后,可以进一步操作轴属性,例如,可以在第一个绘图上旋转x标签,然后向上移动第二个标签,使其接触:
set(ah1,'XTickLabel','')
pos2(2) = pos1(2) - pos2(4);
set(ah2,'Position',pos2)

08-07 01:57