Подтвердить что ты не робот

Matlab: Как выровнять оси подзаголовков, когда один из них содержит цветную панель?

Минимальный пример:

[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,:));

output

В этом примере я хотел бы, чтобы нижняя подзапись показывала поперечное сечение пиков вдоль y = 0, а график заканчивался в том же положении, что и pplor subplot, так что x ticks находятся в одинаковых положениях. На самом деле, мне не нужна дублирующая ось x. Таким образом,

Как перемасштабировать нижний подзаговор таким образом, чтобы правый предел соответствовал правому пределу верхней части участка? (предпочтительно, чтобы цветная панель включалась/выключалась без разрушения этого выравнивания)

(FYI я узнал. Я могу использовать команду linkaxes, затем для правильного изменения масштаба на втором шаге)

4b9b3361

Ответ 1

Вы можете просто установить ширину второго подзаголовка в ширину первого, изменив свойство 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)

enter image description here