2011-04-20 20 views
67

Para agregar una leyenda a un gráfico matplotlib, uno simplemente ejecuta legend().Eliminar la leyenda en una figura matplotlib

Cómo eliminar una leyenda de una trama?

(Lo más cerca que llegué a esto es ejecutar legend([]) con el fin de vaciar la leyenda de los datos. Pero eso deja un rectángulo blanco fea en la esquina superior derecha.)

Respuesta

63

A partir de matplotlib v1.4.0rc4, se ha agregado un método remove al objeto de la leyenda.

Uso:

ax.legend_.remove() 

o

legend = ax.legend(...) 
... 
legend.remove() 

Ver here para el cometer donde este se introdujo.

15

hay que añadir las siguientes líneas de código:

ax = gca() 
ax.legend_ = None 
draw() 

GCA() devuelve los ejes actuales manejan, y tiene la propiedad de que legend_

+0

Gracias, parece funcionar. (Pero qué interfaz tan horrible ...) Sugiero reemplazar 'draw()' por 'show()'. ¿O hay una ventaja particular en el uso de 'dibujar'? –

+0

'show()' estaría bien si la actualización del gráfico fuera el último comando de un programa. 'draw()' está bien, ya que es el comando de actualización general del gráfico. Por ejemplo, es posible que desee solicitar al usuario alguna entrada en un terminal después de actualizar el gráfico, lo que no se puede hacer con el bloqueo 'show()'. – EOL

+0

Derecha. Gracias por la respuesta. Ahora estoy de acuerdo en que 'dibujar' es más apropiado (pero siempre he usado' show' para actualizar mis gráficos ...). –

60

Se puede usar el método de set_visible la leyenda:

ax.legend().set_visible(False) 
draw() 

Esto se basa en una respuesta proporcionada a mí en respuesta a una pregunta similar que tuve hace algún tiempo here

(Gracias por esa respuesta Jouni - Lo siento he podido marcar la pregunta como respondida ... tal vez alguien que tiene la autoridad puede hacerlo por mí?)

+3

esto solo oculta la leyenda y no elimina el objeto, ¿verdad? – vlsd

41

Si desea trazar un marco de datos de Pandas y desea eliminar la leyenda, agregue leyenda = Ninguno como parámetro al comando de trazado.

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

df2 = pd.DataFrame(np.random.randn(10, 5)) 
df2.plot(legend=None) 
plt.show() 
Cuestiones relacionadas