Comment changer l'ordre des lignes dans une figure Matlab?

Étant donné un tracé de trois courbes dans un .fichier fig je voudrais ajouter un autre tracé (avec hold all et plot), mais placez-le derrière l'une des courbes déjà existantes (c'est-à-dire assurez-vous que la dernière courbe originale reste au premier plan). Cela peut-il être réalisé sans avoir à extraire les données de tracé et à re-tracer?

25
demandé sur Tobias Kienzler 2011-10-06 17:12:43

3 réponses

Si vous connaissez le handle de la ligne que vous voulez en haut (par exemple parce que vous avez appelé h = plot(...), Vous pouvez utiliser UISTACK

uistack(h,'top')

Vous pouvez également manipuler directement l'ordre des enfants de vos axes actuels. Ce qui suit met la dernière courbe sur le dessus.

chH = get(gca,'Children')
set(gca,'Children',[chH(end);chH(1:end-1)])
40
répondu Jonas 2011-10-06 13:49:08

Lorsque l'image a une légende, la paire get(gca,...) et set(gca,...) entraîne une erreur: "Erreur en utilisant set. Les enfants ne peuvent être mis à une permutation de lui-même" Dans ce cas, j'ai utilisé L'outil GUI select de la figure pour sélectionner les objets axes, puis obtenir et définir le travail uniquement avec les tracés selon les besoins et non la légende. Après avoir appelé set, vous devez actualiser la légende en appelant legend(...). J'avais 5 parcelles que j'avais besoin de réorganiser. En cas de doute sur l'ordre, Permute tracés deux à la fois, actualisez la légende et voyez si c'est l'ordre que vous vouliez

1
répondu Hazem 2014-05-01 08:23:20

La résolution donnée par @ Jonas en utilisant la propriété 'Children' ne fonctionne pas dans son format donné. Il devrait être modifié comme suit:

chH = get(gca,'Children')
set(gca,'Children',flipud(chH))
1
répondu seyyed ali pourmousavi 2015-08-12 10:05:18