2016-04-16 4 views
2

Ich habe eine Matlab-Figur, sagen wir mal MyFigure.fig. Diese Figur hat 12 Kurven mit ihren jeweiligen Legendeneinträgen. Ich möchte jedoch eine der Kurven und ihre Legende löschen. Die Kurve war leicht zu löschen (nur mit dem Cursor und delete drücken), aber wenn ich versuche, seine Legende zu löschen, kann ich nur den Namen löschen.Wie entferne ich Einträge aus einer bestehenden Figurenlegende?

Ich habe nach diesem gesucht und ich habe andere Wege gefunden, es zu tun. Ich habe hilfreich

http://es.mathworks.com/help/matlab/creating_plots/controlling-legends.html

aber fand die Information des nächsten Link kann ich es nicht durchführen. Das Hauptproblem ich hier gefunden, ist dies:

  • Wenn ich versuche, es so zu tun, ich habe keine Probleme:

    Example (not my case): 
    x=0:0.01:pi; 
    y=sin(x); H=plot(x,y); 
    hAnnotation = get(H, 'Annotation'); 
    
  • Aber in meinem Fall habe ich nicht zu benutze "plot" weil ich schon die Figur habe. Also, wenn ich es öffnen und ich versuche, den Griff zu bekommen (von H = gcf oder H = GCA) und dann schreibe ich den Code

    hAnnotation = get(H, 'Annotation'); 
    

Ich habe die nächsten Fehler:

  1. der Name 'Annotation' ist nicht zugänglich Eigenschaft für eine Instanz von Klasse 'Zahl' (im Fall von GCF)
  2. Der Name ‚Annotation‘ ist nicht zugänglich Eigenschaft für eine Instanz von Klasse ‚Achsen‘ (im Fall von GCA)

Antwort

0

Nun, es gibt einige Punkte in Ihrem Code, die schief gehen werden. Kommen direkt auf Ihr Problem, das ist, was ich vorschlagen:

Soweit ich sehen kann, ist dies das gleiche Problem, das aufgefordert wird, und beantwortet here, sondern umgekehrt: statt Hinzufügen von Informationen, möchten Sie entfernen Einträge der Legende. In der Tat führt das zu genau dem gleichen: Sie möchten die Legende aktualisieren. So können Sie die gleiche Methode wie in der genannten Frage beschrieben verwenden:

Wenn Sie etwas plotten, verwenden Sie den 'DisplayName'-Parameter. In Ihrem Beispiel wäre das:

plot(x,y, 'DisplayName', 'myNameForThisLineGoesHere'); 
%now, after you added OR removed a line (etc.), you have to update the legend: 
legend('off'); legend('on')