Estoy seguro de que estoy olvidando algo muy simple, pero no puedo lograr que ciertas parcelas funcionen con Seaborn.
Si lo hago:
import seaborn as sns
Luego, todas las parcelas que creo como de costumbre con matplotlib obtienen el estilo Seaborn (con la cuadrícula gris en el fondo).
Sin embargo, si trato de hacer uno de los ejemplos, como:
In [1]: import seaborn as sns
In [2]: sns.set()
In [3]: df = sns.load_dataset('iris')
In [4]: sns.pairplot(df, hue='species', size=2.5)
Out[4]: <seaborn.axisgrid.PairGrid at 0x3e59150>
La función pairplot devuelve un objeto PairGrid, pero el gráfico no aparece.
Estoy un poco confundido porque matplotlib parece estar funcionando correctamente, y los estilos Seaborn se aplican a otros gráficos de matplotlib, pero las funciones Seaborn no parecen hacer nada. ¿Alguien tiene alguna idea de cuál podría ser el problema?
python
matplotlib
seaborn
robc89
fuente
fuente
%matplotlib inline
para especificar el backend en línea. De lo contrario, podría llamarsns.plt.show()
para representar la trama en una ventana separada.Respuestas:
Las parcelas creadas con seaborn deben mostrarse como parcelas matplotlib ordinarias. Esto se puede hacer usando el
función de matplotlib.
Originalmente publiqué la solución para usar el objeto matplotlib ya importado de seaborn (
sns.plt.show()
), sin embargo, esto se considera una mala práctica. Por lo tanto, simplemente importe directamente el módulo matplotlib.pyplot y muestre sus parcelas conSi se usa el cuaderno IPython, se puede invocar el backend en línea para eliminar la necesidad de llamar a show después de cada diagrama. La magia respectiva es
fuente
%matplotlib qt
,%matplotlib gtk
,%matplotlib tk
etc. véase%matplotlib?
para más información%matplotlib inline
a una variedad de archivos de configuración para que siempre se aplique? ¿O siempre necesito agregarlo a cada libro nuevo?Llego a esta pregunta con bastante frecuencia y siempre me lleva un tiempo encontrar lo que busco:
Tenga en cuenta: en Python 2, también puede usar
sns.plt.show()
, pero no en Python 3.Ejemplo completo
Da
fuente
AttributeError: module 'seaborn' has no attribute 'plt'
sns.plt
Para evitar confusiones (como parece haber algo en los comentarios). Asumiendo que estás en Jupyter:
%matplotlib inline
> muestra las parcelas DENTRO del cuadernosns.plt.show()
> muestra las parcelas FUERA del cuaderno%matplotlib inline
se ANULARsns.plt.show()
en el sentido de que las parcelas serán mostrados EN el bloc de notas, incluso cuandosns.plt.show()
se llama.Y sí, es fácil incluir la línea en su configuración:
Ejecute automáticamente% matplotlib en línea en IPython Notebook
Pero parece una mejor convención para mantenerlo junto con las importaciones en el código real.
fuente
Esto funciono para mi
fuente
Mi consejo es solo dar un
plt.figure()
y dar alguna trama sns. Por ejemplosns.distplot(data)
.Aunque parecerá que no muestra ninguna trama, cuando maximice la figura, podrá ver la trama.
fuente
plt.figure()
) antes de hacer mi diagrama de línea y no entendí por qué la trama no apareció. ¡Excelente, gracias!Si traza en la consola IPython (donde no puede usar
%matplotlib inline
) en lugar del cuaderno Jupyter, y no desea ejecutarloplt.show()
repetidamente, puede iniciar la consola IPython conipython --pylab
:fuente
Para saber por el estilo de su fragmento de código, supongo que estaba usando IPython en lugar de Jupyter Notebook.
En este número en GitHub, un miembro de IPython dejó claro en 2016 que la visualización de gráficos solo funcionaría cuando "solo funciona cuando es un núcleo de Jupyter". Por lo tanto, la
%matplotlib inline
no funcionaría.Estaba teniendo el mismo problema y le sugiero que use Jupyter Notebook para la visualización.
fuente