Tracer une série de données sous une autre
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à?
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);