2012-05-11 18 views
7

Intento imprimir un figlegend con una sola línea, pero solo consigo la primera letra. Tengo la siguiente secuencia de comandos para hacer la trama:Matplotlib: figlegend solo imprime la primera letra

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

La salida es: output

¿Qué estoy haciendo mal? (¿O es un error?)

+2

'('Limit')' no está interperted como una tupla en python, '('Limit',)' is. Mi suposición es que '['Limit']' debería funcionar bien. – Hooked

Respuesta

15

No he averiguado si es un error o intencional (por alguna razón) en matplotlib, pero para obtener una etiqueta de leyenda completa debe dejar una coma al final su lista de etiquetas:

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

cambio de esa línea y su código:

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

produce la figura:

full legend label

+3

Es una característica de Python: para especificar una lista de elementos individuales, necesita esa sintaxis para diferenciarla de solo un cierto valor escalar en pares. http://docs.python.org/tutorial/datastructures.html#tuples-and-sequences –

+0

Esta es la peculiaridad más extraña de Python que he encontrado hasta ahora. Muy agradecido de que hayas descubierto esto. – GLaDER

Cuestiones relacionadas