2014-10-01 7 views
5

Ich habe ein Diagramm mit mehreren Zeilen, jede separat gekennzeichnet. Ich möchte eine Legende in die Handlung einfügen, so dass einzelne Linien identifiziert werden können. Die Standardreihenfolge von Etiketten und Markierungen sieht ungefähr so ​​aus:Matplotlib Legende: Etiketten über Markierungen

Marker: label
Marker: label
Marker: label
... und so weiter.

Aus verschiedenen ästhetischen Gründen möchte ich, dass die Anzahl der Spalten in meiner Legende der Anzahl der Zeilen (und Beschriftungen) entspricht, die ich mit der Option ncol ändere. Also, zur Zeit, meine Legende wie folgt aussieht:

Marker: label         Marker: label         Marker: label

Es wäre für mich viel klarer sein, aber die Etiketten zu haben oben die Marker in dieser Anordnung. Was ich möchte, ist so etwas wie:

Label             Label             Label
Marker     Marker     Marker

Ich frage mich, ob es eine „schnell fix "Weg, um eine solche Legende zu erreichen.

+0

Haben Sie schon eine "schnelle Lösung" für dieses Problem gefunden? Ich wäre daran interessiert, dies auch zu tun. –

+0

Aus der Dokumentation scheint es, dass die einzigen Optionen Marker sind: label oder label: marker. – pceccon

Antwort

1

die Art, wie ich darüber Am Ende ging, war die Positionen der Textelemente in der Legende manuell konfigurieren legend.get_texts() über jedes Textobjekt iterieren verwenden. Ein Dummy-Code:

for txt in legend.get_texts(): 
    txt.set_ha("center") # horizontal alignment of text item 
    txt.set_x(-5) # x-position 
    txt.set_y(10) # y-position 

Durch Erhöhen der y-Position schieben Sie die Beschriftung nach oben (d. H. Über die Markierung). In ähnlicher Weise ist es durch Verringern der x-Position möglich, eine Ausrichtung über die Spitze des Markers zu erreichen.