Question

Lorsque vous tracez des éléments dans Matlab, la dernière série de données tracées est placée sur ce qui existe déjà. Par exemple:

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

Ici, la ligne rouge est affichée en haut de la ligne bleue (où ils se croisent). Existe-t-il un moyen de définir "Quelle est la profondeur"? une ligne est tracée, de sorte que vous puissiez tracer des éléments sous ce qui est déjà là?

Était-ce utile?

La solution

Utilisez la commande uistack . Par exemple:

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

tracera deux lignes avec la ligne rouge tracée en haut de la ligne bleue. Si vous faites ensuite:

uistack(h1);

la ligne bleue sera portée au premier plan.

Autres conseils

Vous pouvez également accomplir cela en définissant l'ordre du vecteur enfants des axes actuels. Si vous procédez comme suit:

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

vous verrez que h est un vecteur qui contient h1 et h2. L'ordre d'empilement graphique est représenté par l'ordre des poignées dans h. Dans cet exemple, pour inverser l'ordre d'empilement, procédez comme suit:

h = flipud(h);
set(gca, 'Children', h);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top