Diagrama de dispersión de Seaborn – Tutorial y ejemplos

D

 

Introducción

Seaborn es una de las bibliotecas de visualización de datos más utilizadas en Python, como una extensión de Matplotlib. Ofrece una API simple, intuitiva pero altamente personalizable para la visualización de datos.

En este tutorial, veremos cómo trazar un diagrama de dispersión en Seaborn. Cubriremos gráficos de dispersión simples, múltiples gráficos de dispersión con FacetGrid y gráficos de dispersión 3D.

Datos de importacion

Usaremos el Felicidad mundial conjunto de datos y compare el puntaje de felicidad con diferentes características para ver qué influye en la felicidad percibida en el mundo:

import pandas as pd

df = pd.read_csv('worldHappiness2016.csv')

Trazar un diagrama de dispersión en Seaborn

Ahora, con el conjunto de datos cargado, importemos PyPlot, que usaremos para mostrar el gráfico, así como Seaborn. Trazaremos el puntaje de felicidad contra la economía del país (PIB per cápita):

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

df = pd.read_csv('worldHappiness2016.csv')

sns.scatterplot(data = df, x = "Economy (GDP per Capita)", y = "Happiness Score")

plt.show()

Seaborn hace que sea realmente fácil trazar gráficos básicos como diagramas de dispersión. No necesitamos jugar con el Figure objeto, Axes instancias o configurar cualquier cosa, aunque podemos si queremos. Aquí, hemos proporcionado el df como el data argumento, y proporcionó las características que queremos visualizar como el x y y argumentos.

Estos deben coincidir con los datos presentes en el conjunto de datos y las etiquetas predeterminadas serán sus nombres. Personalizaremos esto en una sección posterior.

Ahora, si ejecutamos este código, nos saludan con:

Aquí, hay una fuerte correlación positiva entre la economía (PIB per cápita) y la felicidad percibida de los habitantes de un país / región.

Trazar múltiples diagramas de dispersión en Seaborn con FacetGrid

Si desea comparar más de una variable con otra, como la esperanza de vida promedio, así como el puntaje de felicidad contra la economía, o cualquier variación de esto, no es necesario crear una gráfica 3D para esto.

Si bien existen gráficos 2D que visualizan correlaciones entre más de dos variables, algunos de ellos no son completamente amigables para principiantes.

Seaborn nos permite construir un FacetGrid objeto, que podemos usar para facetar los datos y construir múltiples gráficos relacionados, uno al lado del otro.

Echemos un vistazo a cómo hacer eso:

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

df = pd.read_csv('worldHappiness2016.csv')

grid = sns.FacetGrid(df, col = "Region", hue = "Region", col_wrap=5)
grid.map(sns.scatterplot, "Economy (GDP per Capita)", "Health (Life Expectancy)")

grid.add_legend()

plt.show()

Aquí, hemos creado un FacetGrid, pasando nuestros datos (df) a ella. Especificando el col argumento como "Region", le hemos dicho a Seaborn que nos gustaría facetar los datos en regiones y trazar un diagrama de dispersión para cada región del conjunto de datos.

También hemos asignado el hue depende de la región, por lo que cada región tiene un color diferente. Finalmente, hemos configurado el col_wrap argumento para 5 para que toda la figura no sea demasiado ancha, se divide en cada 5 columnas en una nueva fila.

A esto grid objeto, nosotros map() nuestros argumentos. Específicamente, especificamos un sns.scatterplot como el tipo de trama que nos gustaría, así como el x y y variables que queremos trazar en estos diagramas de dispersión.

Esto da como resultado 10 diagramas de dispersión diferentes, cada uno con el x y y datos, separados por región.

También agregamos una leyenda al final, para ayudar a identificar los colores.

Trazar un diagrama de dispersión 3D en Seaborn

Seaborn no viene con ninguna funcionalidad 3D incorporada, desafortunadamente. Es una extensión de Matplotlib y se basa en él para el trabajo pesado en 3D. Sin embargo, podemos diseñar la trama 3D Matplotlib, usando Seaborn.

Establezcamos el estilo usando Seaborn y visualicemos un diagrama de dispersión en 3D entre felicidad, economía y salud:

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from mpl_toolkits.mplot3d import Axes3D

df = pd.read_csv('2016.csv')
sns.set(style = "darkgrid")

fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')

x = df['Happiness Score']
y = df['Economy (GDP per Capita)']
z = df['Health (Life Expectancy)']

ax.set_xlabel("Happiness")
ax.set_ylabel("Economy")
ax.set_zlabel("Health")

ax.scatter(x, y, z)

plt.show()

La ejecución de este código da como resultado una visualización 3D interactiva que podemos desplazar e inspeccionar en un espacio tridimensional, con el estilo de un gráfico Seaborn:

Personalización de gráficos de dispersión en Seaborn

Con Seaborn, es fácil personalizar varios elementos de los gráficos que crea. Por ejemplo, puede configurar el hue y size de cada marcador en un diagrama de dispersión.

Cambiemos algunas de las opciones y veamos cómo se ve la trama cuando se modifica:

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

df = pd.read_csv('2016.csv')

sns.scatterplot(data = df, x = "Economy (GDP per Capita)", y = "Happiness Score", hue = "Region", size = "Freedom")

plt.show()

Aquí, hemos configurado el hue a Region lo que significa que los datos de diferentes regiones tendrán diferentes colores. Además, hemos establecido el size sea ​​proporcional a la función Freedom. Cuanto mayor sea el factor de libertad, mayores serán los puntos:

O puede establecer un tamaño fijo para todos los marcadores, así como un color:

sns.scatterplot(data = df, x = "Economy (GDP per Capita)", y = "Happiness Score", hue = "red", size = 5)

Conclusión

En este tutorial, hemos repasado varias formas de trazar un diagrama de dispersión usando Seaborn y Python.

Si está interesado en la visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro libro sobre Visualización de datos en Python.

Data Visualization in Python, un libro para desarrolladores de Python principiantes e intermedios, lo guiará a través de la manipulación simple de datos con Pandas, cubrirá bibliotecas de trazado centrales como Matplotlib y Seaborn, y le mostrará cómo aprovechar las bibliotecas declarativas y experimentales como Altair.

 

Visualización de datos en Python

¡Comprenda mejor sus datos con visualizaciones! Con 340 páginas, aprenderá los entresijos de la visualización de datos en Python con bibliotecas populares como Matplotlib, Seaborn, Bokeh y más.

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad