Diagrama de dispersión Seaborn - Tutorial y ejemplos

En este tutorial, veremos cómo trazar un diagrama de dispersión de Seaborn en Python. Repasaremos ejemplos de trazados simples, así como trazados multifacéticos de múltiples trazados y trazados en 3D usando Seaborn y Matplotlib.

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 diagramas de dispersión simples, diagramas de dispersión múltiples con FacetGrid y diagramas de dispersión en 3D.

Importar datos

Usaremos el conjunto de datos felicidad mundial y compararemos la Puntuación de felicidad con diferentes características para ver qué influye en la felicidad percibida en el mundo:

1
2
3
import pandas as pd

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

Trace 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 (PIB per cápita) del país:

1
2
3
4
5
6
7
8
9
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 muy fácil trazar gráficos básicos como diagramas de dispersión. No necesitamos jugar con el objeto Figura, las instancias Axes ni configurar nada, aunque podemos hacerlo si queremos. Aquí, proporcionamos el df como el argumento data, y proporcionamos las características que queremos visualizar como los argumentos x e y.

Estos tienen que 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, somos recibidos con:

tutorial de diagramas de dispersión simples de seaborn

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.

Trazado de 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 en comparación con la economía, o cualquier variación de esto, no es necesario crear un gráfico en 3D. para esto.

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

Seaborn nos permite construir un objeto FacetGrid, 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 hacerlo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
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()

tutorial de diagramas de dispersión múltiples de facetgrid de seaborn

Aquí, hemos creado un FacetGrid, pasándole nuestros datos (df). Al especificar el argumento col como "Región", le hemos dicho a Seaborn que nos gustaría dividir los datos en regiones y trazar un diagrama de dispersión para cada región en el conjunto de datos.

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

A este objeto grid, mapeamos() nuestros argumentos. Específicamente, especificamos un sns.scatterplot como el tipo de gráfico que nos gustaría, así como las variables x e y que queremos trazar en estos diagramas de dispersión.

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

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

Trazado de un diagrama de dispersión 3D en Seaborn

Desafortunadamente, Seaborn no viene con ninguna funcionalidad 3D incorporada. 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 3D entre felicidad, economía y salud:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
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()

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

seaborn 3d scatter plot

Personalización de diagramas de dispersión en Seaborn

Usando Seaborn, es fácil personalizar varios elementos de las tramas que haces. Por ejemplo, puede establecer el tono y el tamaño 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:

1
2
3
4
5
6
7
8
9
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 establecido el tono en Región, lo que significa que los datos de diferentes regiones tendrán diferentes colores. Además, hemos configurado el tamaño para que sea proporcional a la función Libertad. Cuanto más alto es el factor de libertad, más grandes son los puntos:

seaborn customizing scatter plot

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

1
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 Visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro paquete de libros en [Visualización de datos en Python](https://gum.co/data-visualization -en-paquete-de-libros-de-python):

Visualización de datos en Python Vuélvase peligroso con la visualización de datos ✅ Garantía de devolución de dinero de 30 días sin preguntas ✅ Principiante a Avanzado ✅ Actualizado periódicamente de forma gratuita (última actualización en abril de 2021) ✅ Actualizado con recursos y guías adicionales

Visualización de datos en Python con Matplotlib y Pandas es un libro diseñado para llevar a los principiantes absolutos a Pandas y Matplotlib, con conocimientos básicos de Python, y permitirles construir una base sólida para el trabajo avanzado con estas bibliotecas, desde gráficos simples. a gráficos 3D animados con botones interactivos.

Sirve como una guía detallada que le enseñará todo lo que necesita saber sobre Pandas y Matplotlib, incluido cómo construir tipos de gráficos que no están integrados en la propia biblioteca.

Visualización de datos en Python, un libro para desarrolladores principiantes e intermedios de Python, lo guía a través de la manipulación de datos simple con Pandas, cubre bibliotecas de trazado centrales como Matplotlib y Seaborn, y le muestra cómo aprovechar las bibliotecas declarativas y experimentales. como Altair. Más específicamente, a lo largo de 11 capítulos, este libro cubre 9 bibliotecas de Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas y VisPy.

Sirve como una guía práctica única para la visualización de datos, en una plétora de herramientas que podría usar en su carrera.