Plot 'n data-reeks onder 'n ander een
Vra
As jy dinge plot in Matlab, is die mees onlangs getrek data reeks geplaas op die top van alles wat reeds daar. Byvoorbeeld:
figure; hold on
plot(sin(linspace(0,pi)),'linewidth',4,'color',[0 0 1])
plot(cos(linspace(0,pi)),'linewidth',4,'color',[1 0 0])
Hier is die rooi lyn word op die top van die blou lyn (waar hulle sny). Is daar enige manier om ' "hoe diep" 'n lyn getrek word, sodat jy kan plot dinge onder wat reeds daar?
Oplossing
Gebruik die uistack command. Byvoorbeeld:
h1 = plot(1:10, 'b');
hold on;
h2 = plot(1:10, 'r');
sal stip twee lyne met die rooi lyn getrek op die top van die blou lyn. As jy dan doen:
uistack(h1);
die blou lyn sal aan die voorkant gebring word.
Ander wenke
Jy kan ook dit te bewerkstellig deur die oprigting van die orde van die kinders vektor van die huidige asse. As jy dit doen die volgende:
figure; hold on
h1 = plot(sin(linspace(0,pi)),'linewidth',4,'color',[0 0 1]);
h2 = plot(cos(linspace(0,pi)),'linewidth',4,'color',[1 0 0]);
h = get(gca, 'Children');
jy sal sien dat h is 'n vektor wat h1 en h2 bevat. Die grafiese stapel orde is verteenwoordig deur die einde van die handvatsels in h. In hierdie voorbeeld, na die stapel orde wat jy kan doen om te keer:
h = flipud(h);
set(gca, 'Children', h);