Domanda

Quando si tracciano cose in Matlab, le serie di dati tracciati più di recente vengono posizionate in cima a qualsiasi cosa sia già presente. Ad esempio:

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

Qui, la linea rossa è mostrata sopra la linea blu (dove si intersecano). C'è un modo per impostare "quanto in profondità" viene tracciata una linea, in modo da poter tracciare le cose sotto cosa c'è già?

È stato utile?

Soluzione

Utilizza il comando uistack . Ad esempio:

h1 = plot(1:10, 'b');
hold on;
h2 = plot(1:10, 'r');

traccia due linee con la linea rossa tracciata sopra la linea blu. In tal caso:

uistack(h1);

la linea blu verrà portata in primo piano.

Altri suggerimenti

Puoi anche farlo impostando l'ordine del vettore figlio degli assi correnti. Se esegui le seguenti operazioni:

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');

vedrai che h è un vettore che contiene h1 e h2. L'ordine di impilamento grafico è rappresentato dall'ordine delle maniglie in h. In questo esempio, per invertire l'ordine di sovrapposizione è possibile eseguire:

h = flipud(h);
set(gca, 'Children', h);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top