Hinzufügen von benutzerdefinierten Legende ohne Bezug auf die Grafik
Möchte ich einfügen einer Legende, die nichts mit der Grafik zu löschen:
figure;
hold on;
plot(0,0,'or');
plot(0,0,'ob');
plot(0,0,'ok');
leg = legend('red','blue','black');
Nun ich möchte hinzufügen, dass es um eine andere Figur:
figure;
t=linspace(0,10,100);
plot(t,sin(t));
%% ADD THE LEGEND OF PLOT ABOVE
dies ist ein einfaches Beispiel für eine größere Sache, ich habe so was Sie vorschlagen, ist nicht relevant, es muss einen Weg, es zu tun
So ist es nicht klar, was Sie erreichen wollen. Können Sie mehr Informationen? Warum müssen Sie Legende, wenn es keine zugehörigen Daten in den plot.
was ich erreichen möchte ist genau das, was ich schrieb, verwenden Sie das Feld mit der Legende der ersten Figur, und haben es angezeigt, auf der zweiten
2 hacky-Optionen: (1) hinzufügen von leeren
Sie können sogar
So ist es nicht klar, was Sie erreichen wollen. Können Sie mehr Informationen? Warum müssen Sie Legende, wenn es keine zugehörigen Daten in den plot.
was ich erreichen möchte ist genau das, was ich schrieb, verwenden Sie das Feld mit der Legende der ersten Figur, und haben es angezeigt, auf der zweiten
2 hacky-Optionen: (1) hinzufügen von leeren
lineserie
(oder eine leere Grafik-Objekt) in der axes
so, dass es genug, um füllen Sie die Legende. (2, besser, in meiner Sicht) machen Sie Ihre eigenen legend
Objekt (es ist nur eine Besondere axes
Objekt, nachdem alle), die Sie verschieben/kopieren/ändern frei in Ihren Figuren. Beispiel, wie das geht finden Sie hier: plot-Legende-Titel.Sie können sogar
NaN
statt 0
für Ihre plot-Daten. Auf diese Weise müssen Sie nicht einmal berühren Sie die visible
Eigenschaft, nichts wird angezeigt sowieso (die Legende wird immer noch Daten annehmen serie als eine gültige Eingabe).InformationsquelleAutor jarhead | 2015-11-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, wie ich dieses problem gelöst haben in der Vergangenheit:
Diesem Grundstück wird die zusätzliche Punkte, aber da die Koordinaten sind bei
NaN
Sie nicht sichtbar sein wird auf dem Grundstück selbst:BEARBEITEN 26/10/2016: Meine ursprüngliche Antwort ergibt sich in ausgegraut Legende Einträge in 2016b. Der aktualisierte code oben funktioniert, aber die Antwort unten ist nur relevant, pre-2016b:
Diesem Grundstück wird die zusätzliche Punkte, aber Sie werden nicht sichtbar auf dem Grundstück selbst.
Können Sie auch
copyobj
kopieren Grafik-Elemente von einem Bild zum anderen, wenn Sie eine Menge von Elementen, dann verwenden Sieset(x, 'visible', 'off')
Sie zu verstecken, bevor Sie sehen, die Legende, aber es hängt davon ab, was Ihre endgültige Anwendung ist.Auf matlab r2016b, die Legende von einer unsichtbaren Handlung wird ausgegraut..
Autsch, ja, du hast Recht! Ich aktualisiert meine Antwort zu verwenden
NaN
Koordinaten statt der unsichtbaren Grundstücke, vorgeschlagen von jarhead und Hoki in die Kommentare.Der entscheidende Punkt, ich denke, dass ist der Satz: 'visible', 'off'
InformationsquelleAutor zelanix
Ihre Frage ist ein wenig unklar. Jedoch, das erste, was ich dachte beim Lesen es war die
text
- Funktion in Matlab.Können Sie die
text
Funktion zum hinzufügen von text, um eine Matlab-Figur. Es istwo
x
undy
sind die Koordinaten in der Abbildung, wo Sie den text einfügen möchtenstr
. Sie können die dieColor
Möglichkeit,text
für Farben und TeX, um Linien zu zeichnen oder sogar_
. Ich habe eine sehr kreative plots mit text.Hier ist eine quick-and-dirty Beispiel für die Emulation einer
Legende
mittext
produziert
Für diesen speziellen Fall können Sie den jeweiligen Befehl (bereits von @Hoki in den Kommentaren).
produzieren
durch abrufen des handle auf das
text
Objekt, wird es trivial, um es zu kopieren, um eine neue Figur,copyobj(ht, newfig)
. [Eins]text
nicht die Farbe und das format, die Legende bietet.Sie können die
Color
Möglichkeittext
für Farben und TeX, um Linien zu zeichnen oder sogar_
. Ich habe eine sehr kreative plots mittext
.Klingt interessant, könnte Ihnen ein kleines Beispiel für eine
TeX
undColor
syntax intext
Objekte ?Schön. Sie können auch ändern, die Farbe teilweise in eine text-zone (mit TeX-color markup), und mehrere Zeilen text in einem text-Objekt. So definieren Sie die Legende in eine gehen !. Versuchen Sie dies :
ht = text(5,0,{'{\color{red} o } Red (serie 1)','{\color{blue} o } Blue (serie 2)','{\color{black} o } Black (serie 3)'},'EdgeColor','k') ;
. Auf diese Weise müssen Sie nicht haben, um zu definieren, mehreretext
Objekte.Ich habe definitiv nichts dagegen. Ich hatte gehofft, Sie würde zu reproduzieren das Beispiel ;-). Es ist nicht unterschiedlich genug aus deiner Antwort, verdient eine separate Antwort, aber es gibt extra info/Optionen zu bauen, eine hübsche Legende, so ist es erwähnenswert. Mir auch ich vermisse eine Art und Weise zu zeichnen netten Zeilen mit text. Auch im Fall, dass Sie Ihre Linie Symbole unterschiedlich sind, können Sie erwägen, eine Feste Größe der schriftart, um einen schönen Ausrichtung (es kann ziemlich hässlich). Letzter Tipp, ich würde das abrufen der Griff des text-Objekt erstellt, so wird es trivial zu verwenden, das gleiche Objekt in einem anderen Bild:
copyobj(ht,newfig)
.InformationsquelleAutor IKavanagh