Parcelas marinas que no aparecen

Estoy seguro de que estoy olvidando algo muy simple, pero no puedo conseguir ciertas ttwigs para trabajar con Seaborn.

Si lo hago:

import seaborn as sns 

Luego, cualquier gráfico que cree como de costumbre con matplotlib obtiene el estilo de Seaborn (con la cuadrícula gris en el fondo).

Sin embargo, si bash hacer uno de los ejemplos, como por ejemplo:

 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]:  

La función pairplot devuelve un objeto PairGrid, pero la ttwig no se muestra.

Estoy un poco confundido porque matplotlib parece funcionar correctamente, y los estilos de Seaborn se aplican a otras plots de matplotlib, pero las funciones de Seaborn no parecen hacer nada. ¿Alguien tiene alguna idea de cuál podría ser el problema?

Las plots creadas utilizando marinos deben mostrarse como plots de matplotlib ordinarias. Esto se puede hacer usando el

 plt.show() 

Funcionar desde 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 gráficos con

 import matplotlib.pyplot as plt plt.show() 

Si 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 gráfico. La magia respectiva es

 %matplotlib inline 

Vengo a esta pregunta con bastante frecuencia y siempre me lleva un tiempo encontrar lo que busco:

 import seaborn as sns import matplotlib.pyplot as plt plt.show() # <--- This is what you are looking for 

Tenga en cuenta que: en Python 2, también puede usar sns.plt.show() , pero no en Python 3.

Ejemplo completo

 #!/usr/bin/env python # -*- coding: utf-8 -*- """Visualize C_0.99 for all languages except the 10 with most characters.""" import seaborn as sns import matplotlib.pyplot as plt l = [41, 44, 46, 46, 47, 47, 48, 48, 49, 51, 52, 53, 53, 53, 53, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 69, 69, 69, 70, 70, 70, 70, 71, 71, 71, 71, 71, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, 74, 75, 75, 75, 76, 77, 77, 78, 78, 79, 79, 79, 79, 80, 80, 80, 80, 81, 81, 81, 81, 83, 84, 84, 85, 86, 86, 86, 86, 87, 87, 87, 87, 87, 88, 90, 90, 90, 90, 90, 90, 91, 91, 91, 91, 91, 91, 91, 91, 92, 92, 93, 93, 93, 94, 95, 95, 96, 98, 98, 99, 100, 102, 104, 105, 107, 108, 109, 110, 110, 113, 113, 115, 116, 118, 119, 121] sns.distplot(l, kde=True, rug=False) plt.show() 

Da

introduzca la descripción de la imagen aquí

Para evitar confusiones (como parece haber algunas en los comentarios). Asumiendo que estás en Jupyter:

%matplotlib inline > muestra las plots DENTRO del cuaderno

sns.plt.show() > muestra los diagtwigs FUERA del cuaderno

%matplotlib inline sns.plt.show() en el sentido de que se mostrarán gráficos en el cuaderno incluso cuando se sns.plt.show() .

Y sí, es fácil incluir la línea en su configuración:

Ejecutar automáticamente% matplotlib en línea en el cuaderno de IPython

Pero parece una mejor convención para mantenerlo junto con las importaciones en el código real.

Mi consejo es sólo dar un

plt.figure() y da algunos sns plot. Por ejemplo

sns.distplot(data) .

A pesar de que se verá, no muestra ninguna ttwig. Cuando maximice la figura, podrá verla.

Para indicar el estilo de su fragmento de código, supongo que estaba usando IPython en lugar de Jupyter Notebook.

En este número de 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 kernel Jupyter”. Por lo tanto, el %matplotlib inline no funcionaría.

Estaba teniendo el mismo problema y te sugiero que uses el cuaderno de Jupyter para la visualización.

Si %matplotlib inline en la consola IPython (donde no puede usar %matplotlib inline ) en lugar de la notebook Jupyter, y no quiere ejecutar plt.show() repetidamente, puede iniciar la consola IPython con ipython --pylab :

 $ ipython --pylab Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51) Type 'copyright', 'credits' or 'license' for more information IPython 7.0.1 -- An enhanced Interactive Python. Type '?' for help. Using matplotlib backend: Qt5Agg In [1]: import seaborn as sns In [2]: tips = sns.load_dataset("tips") In [3]: sns.relplot(x="total_bill", y="tip", data=tips) # you can see the plot now