tutorial barplot python matplotlib seaborn

python - barplot - seaborn tutorial



Las parcelas nacidas no aparecen (7)

Esto funciono para mi

import matplotlib.pyplot as plt import seaborn as sns . . . plt.show(sns)

Estoy seguro de que estoy olvidando algo muy simple, pero no puedo conseguir 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?


Las parcelas creadas con seaborn deben mostrarse como parcelas matplotlib normales. Esto se puede hacer usando el

plt.show()

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 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 diagrama. La magia respectiva es

%matplotlib inline


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


Mi consejo es solo dar un

plt.figure() y da un poco de trama sns. Por ejemplo

sns.distplot(data) .

Aunque parecerá que no muestra ninguna trama, cuando maximice la figura, podrá ver la trama.


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

%matplotlib inline > muestra los gráficos DENTRO del cuaderno

sns.plt.show() > muestra las parcelas FUERA del cuaderno

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

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.


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

En este issue 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, el %matplotlib inline no funcionaría.

Estaba teniendo el mismo problema y le sugiero que use Jupyter Notebook para la visualización.


Si traza en la consola IPython (donde no puede usar %matplotlib inline ) en lugar del cuaderno Jupyter, y no desea 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