Ich habe eine for i=1:15
bekommen. Im Inneren erzeuge ich eine Variable d=1:0.01:10
, welche die x'x-Achse ist, und auf dieser Grundlage erstelle ich eine kontinuierliche Funktion F (d), die 2 eindeutige Variablen Pitch und Gier hat. Ich zeichne es dann mit verschiedenen Farben in jeder Rekursion mit cmap = hsv(15);
. Also dann ist es:
Dieser Code aktualisiert die eindeutigen Pitch- und Gierwerte bei jeder Rekursion (ohne Leerzeichen zwischen ihnen, so dass es irgendwie irritierend ist), aber versagt:
- Tragen Sie die richtige Farbe auf, die in der Abbildung sichtbar ist.
- Behalten Sie die Farbe der vorherigen Iteration und die Werte von
pitch,yaw
.
Das Hinzufügen von Zeilen zu einer Legende in einer Schleife kann mit "dynamischen Legenden", erfolgen, wie auf undocumentedmatlab beschrieben. com .
Die Idee besteht darin, den Befehl legend
durch:
Aktualisieren Sie dann den Befehl plot
mit einem Parameter DisplayName
:
plot(d,F,'Linewidth',1.0,'DisplayName',sprintf('pitch,yaw: %d,%d',pitch,yaw));
Dann werden Plots, die den Achsen hinzugefügt wurden, zur Legende hinzugefügt:
Wenn halb-dokumentierte Features nicht dein Ding sind, benutze den DisplayName
Trick und schalte einfach den legend
aus / ein. Das heißt, anstelle von -DynamicLegend
:
Eine andere Variante, die weder DisplayName
noch -DynamicLegend
verwendet, ist, die Legende mit zu löschen und neu zu erstellen ein Array von gespeicherten Strings.
Die offizielle Lösung Empfohlen von MathWorks , greifen Sie also die Line-Handles der vorhandenen Legenden und aktualisieren Sie die Legende manuell mit diesen Handles. Dies ist ziemlich schmerzhaft im Vergleich zu der obigen dynamischen Legendenlösung:
%Vor%Als HG2 (Standard in R2014 +) Alternative zur offiziellen MW-Lösung von @ chappjc kann man den Vorteil nutzen, dass die Legende als eigene Klasse re-implementiert wird und nicht als Klumpel anderer Grafikobjekte. Dies hat die Dinge ein wenig aufgeräumt, so dass sie einfacher zu interagieren sind.
Diese neuen legend
-Objekte verfügen jedoch nicht über eine freigelegte Eigenschaft zur Verknüpfung von Legenden Objekte zu geplotteten Objekten haben sie eine solche Eigenschaft, 'PlotChildren'
, die ein Array von Objektgriffen ist.
Zum Beispiel:
%Vor%Rückkehr:
%Vor% Um unser Objekt legend
zu aktualisieren, ohne legend
erneut aufzurufen, können wir die Eigenschaften 'PlotChildren'
und 'String'
unseres vorhandenen Objekts legend
ändern. Solange ein 'String'
-Eintrag für jedes Objekt in 'PlotChildren'
existiert, wird es in der Legende gerendert.
Zum Beispiel:
%Vor%Was zurückgibt:
Diese Funktionalität kann in eine generische Hilfsfunktion eingebunden werden, um das Anhängen eines oder mehrerer Legendeneinträge zu unterstützen. Wir haben das mit legtools
auf GitHub
Tags und Links matlab figure legend matlab-figure