Rafraichir une légende

L’idée est de successivement plotter une ligne puis afficher la légende , plotter une seconde ligne , ré-afficher la légende avec cette nouvelle donnée.

Voilà le code simplifié : on plotte deux lignes auxquelles on ajoute un displayname :

plot(1:10,'b','displayname','1st graph')
legend('show')
hold on
plot(3:5,'r','displayname','2nd graph')
legend('show')

only one legend

Ce qu’on remarque c’est que la légende de la ligne rouge ‘2nd graph’ n’apparait pas. Alors évidemment on pourrait appeler legend show une seule fois à la fin du code. Mais nous dans notre cas on voudrait voir la légende se rafraichir.
Il existe deux solutions : une manuelle supportée et une en ligne de commande non semi-documentée.

  • La première solution officielle

Il suffit de cliquer droit sur la légende et de choisir dans le context menu « Refresh » :

refresh legend

  • La seconde solution semi documentée

C’est d’utiliser la propriété -DynamicLegend

plot(1:10,’b’,’displayname’,’1st graph’)
legend(‘-DynamicLegend’);
legend(‘show’)
hold on
plot(3:5,’r’,’displayname’,’2ng graph’)
legend(‘show’)

Elle est semi documentée dans le sens où il suffit d’afficher le code legend.m pour voir apparaitre cette option:
edit legend
legend

Bref dans les 2 cas on arrive au résultat souhaité:

two legends

Laisser un commentaire