2012-05-11 13 views
7

Próbuję wydrukować figielkę z tylko jedną linią, ale otrzymuję tylko pierwszą literę. Mam następujący skrypt do przygotowywania działki:Matplotlib: figlegend tylko druk pierwszej litery

from pylab import * 
k = plot((0, 1),(1, 1)) 
figlegend((k),('Limit'),loc='lower center') 
savefig('test.pdf') 

Wyjście jest: output

Co robię źle? (Czy jest to błąd?)

+2

'' (Limit ') 'nie jest interpretowane jako krotka w pytonie,' (' Limit ',) 'jest. Domyślam się, że '['Limit']' powinno działać dobrze. – Hooked

Odpowiedz

15

Nie wiem, czy jest to błąd lub zamierzony (z jakiegoś powodu) w matplotlib, ale aby uzyskać etykietę z pełną legendą, należy zostawić przecinek na końcu Twoja lista etykiet:

figlegend((k),('Limit',),loc='lower center') 

zmiana ta linia i kod:

from pylab import * 
k = plot((0, 1),(1, 1)) 
figlegend((k),('Limit',),loc='lower center') 
savefig('test.pdf') 

produkuje postać:

full legend label

+3

Jest to funkcja Pythona: aby określić listę pojedynczych elementów, potrzebna jest ta składnia, aby odróżnić ją od pewnej wartości skalarnej w parens. http://docs.python.org/tutorial/datastructures.html#tuples-and-sequences –

+0

To najdziwniejsze dziwactwo Pythona, z którym się zetknąłem. Tak wdzięczny, że to odkryłeś. – GLaDER

Powiązane problemy