Introducción
Contenido
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.