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?

Was dit nuttig?

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);
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top