Matlab: comment aligner les axes des sous-lots quand l'un d'eux contient une barre de couleur?

un Minimum de exemple:

[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

dans cet exemple, j'aimerais que la sous-parcelle inférieure montre la section transversale des pics le long de y=0 et la parcelle se terminant à la même position que la sous-parcelle pcolor, de sorte que les tiques x soient sur des positions identiques. En fait, je n'ai pas besoin de l'axe X dupliqué alors. Donc,

comment réviser la sous-placette inférieure de façon à ce que la limite de droite corresponde à la limite de droite de la partie supérieure de la placette? (préférablement tels que la barre de couleur peut être activé/désactivé sans détruire l'alignement)

(POUR INFO J' appris je peux utiliser le linkaxes commande ensuite d'avoir un comportement de zoom correct dans une deuxième étape)

12
demandé sur Community 2011-03-10 15:53:56

1 réponses

vous pouvez simplement définir la largeur de la deuxième sous-parcelle à la largeur de la première en changeant le Position propriété.

[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)

vous pouvez ensuite manipuler davantage vos propriétés axes, par exemple vous pouvez tourner les X-labels sur la première parcelle, et déplacer la seconde vers le haut de sorte qu'ils touchent:

set(ah1,'XTickLabel','')
pos2(2) = pos1(2) - pos2(4);
set(ah2,'Position',pos2)

enter image description here

15
répondu Jonas 2011-03-10 14:34:44