2014-10-01 15 views
5

Mam wykres z wieloma wierszami, każdy oznaczony osobno. Chciałbym umieścić legendę na wykresie, aby można było zidentyfikować poszczególne linie. Domyślna kolejność etykiet i markerów wyglądał:Legenda Matplotlib: etykiety powyżej znaczników

markera: etykiety
marker: etykieta
marker: etykieta
... i tak dalej.

Z różnych powodów estetycznych chciałbym, aby liczba kolumn w mojej legendzie była równa liczbie linii (i etykiet), które zmieniam przy użyciu opcji ncol. Tak więc, obecnie moja legenda wygląda następująco:

marker: etykieta         marker: etykieta         marker: etykieta

Byłoby znacznie jaśniejsze dla mnie jednak mieć etykiety powyżej znaczniki w tym układzie. Chciałbym coś takiego jak:

etykiecie             etykieta             etykieta
marker         marker marker

Zastanawiam się, czy istnieje „szybki napraw "sposób na osiągnięcie takiej legendy.

+0

Czy znalazłeś już "szybką naprawę" tego problemu? Byłbym zainteresowany, aby zrobić to równie dobrze. –

+0

Z dokumentacji wydaje się, że jedynymi opcjami są znacznik: etykieta lub etykieta: znacznik. – pceccon

Odpowiedz

1

W końcu droga Poszedłem na ten temat było ręcznie skonfigurować pozycje elementów tekstowych w legendzie przy użyciu legend.get_texts() iteracyjne nad każdego obiektu tekstowego. Jakiś fałszywy kod:

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 

Zwiększając pozycję y, przesuwa się etykietę w górę (tj. Powyżej znacznika). Podobnie przez zmniejszenie pozycji x można uzyskać wyrównanie ponad znacznikiem.

Powiązane problemy