2012-05-11 8 views
7

Ich versuche eine figlegend mit nur einer Zeile zu drucken, bekomme aber nur den ersten Buchstaben. Ich habe das folgende Skript das Grundstück für die Herstellung:Matplotlib: figlegend nur druckender erster Buchstabe

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

Die Ausgabe lautet: output

Was mache ich falsch? (Oder ist es ein Fehler?)

+2

'('Limit')' wird nicht als Tupel in Python interpert, '('Limit')' ist. Meine Vermutung ist, dass '['Limit']' gut funktionieren sollte. – Hooked

Antwort

15

Ich habe nicht herausgefunden, ob es ein Fehler oder absichtlich (aus irgendeinem Grund) in Matplotlib ist, aber um eine vollständige Legende zu erhalten, müssen Sie ein abschließendes Komma auf lassen Ihre Liste der Labels:

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

Änderung, die Linie und Ihr Code:

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

produziert die Figur:

full legend label

+3

Es ist eine Funktion von Python: Um eine Liste mit einzelnen Elementen anzugeben, benötigen Sie diese Syntax, um sie von einigen skalaren Werten in Parens zu unterscheiden. http://docs.python.org/tutorial/datastructures.html#tuples-and-sequences –

+0

Dies ist die seltsamste Eigenart von Python, die ich bisher entdeckt habe. So dankbar, dass du das herausgefunden hast. – GLaDER

Verwandte Themen