Introducción a Seaborn#
Seaborn es una biblioteca para crear gráficos estadísticos en Python. Se basa en matplotlib y se integra estrechamente con las estructuras de datos de pandas.
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
Gráficos de dispersión con seaborn#
Comenzamos cargando una tabla de mediciones en un dataframe df.
df = pd.read_csv("../../data/BBBC007_analysis.csv")
df
| area | intensity_mean | major_axis_length | minor_axis_length | aspect_ratio | file_name | |
|---|---|---|---|---|---|---|
| 0 | 139 | 96.546763 | 17.504104 | 10.292770 | 1.700621 | 20P1_POS0010_D_1UL |
| 1 | 360 | 86.613889 | 35.746808 | 14.983124 | 2.385805 | 20P1_POS0010_D_1UL |
| 2 | 43 | 91.488372 | 12.967884 | 4.351573 | 2.980045 | 20P1_POS0010_D_1UL |
| 3 | 140 | 73.742857 | 18.940508 | 10.314404 | 1.836316 | 20P1_POS0010_D_1UL |
| 4 | 144 | 89.375000 | 13.639308 | 13.458532 | 1.013432 | 20P1_POS0010_D_1UL |
| ... | ... | ... | ... | ... | ... | ... |
| 106 | 305 | 88.252459 | 20.226532 | 19.244210 | 1.051045 | 20P1_POS0007_D_1UL |
| 107 | 593 | 89.905565 | 36.508370 | 21.365394 | 1.708762 | 20P1_POS0007_D_1UL |
| 108 | 289 | 106.851211 | 20.427809 | 18.221452 | 1.121086 | 20P1_POS0007_D_1UL |
| 109 | 277 | 100.664260 | 20.307965 | 17.432920 | 1.164920 | 20P1_POS0007_D_1UL |
| 110 | 46 | 70.869565 | 11.648895 | 5.298003 | 2.198733 | 20P1_POS0007_D_1UL |
111 rows × 6 columns
A partir de esta tabla podemos hacer un gráfico de dispersión de la relación de aspecto frente a la intensidad media.
sns.scatterplot(data=df, x="aspect_ratio", y="intensity_mean")
<AxesSubplot: xlabel='aspect_ratio', ylabel='intensity_mean'>
Podemos incorporar y visualizar otras características proporcionando algunos argumentos adicionales, por ejemplo, podemos usar la medición del área para codificar el tamaño de los puntos de datos y la longitud del eje mayor se puede usar para visualizar los puntos de datos en diferentes colores del mapa de colores magma.
sns.scatterplot(data=df,
x = "aspect_ratio",
y = "intensity_mean",
size = "area",
hue = "major_axis_length",
palette = 'magma')
<AxesSubplot: xlabel='aspect_ratio', ylabel='intensity_mean'>
La función scatterplot es una función a nivel de ejes. Esto significa que, si queremos añadir subgráficos, también necesitamos crear primero una figura y ejes de matplotlib y pasar los manejadores de ejes.
Gráficos de dispersión con subgráficos#
Seaborn también tiene funciones a nivel de figura, donde los subgráficos son un argumento.
En el ejemplo siguiente, usamos la función relplot (de relationship) y separamos los archivos proporcionando ‘file_name’ al argumento col. Esto nos permite ver las mediciones separadas por el archivo de imagen del que se tomaron las mediciones.
sns.relplot(data=df,
x = "aspect_ratio",
y = "intensity_mean",
size = "area",
hue = "major_axis_length",
col = "file_name",
palette = 'magma')
<seaborn.axisgrid.FacetGrid at 0x148dd2d2be0>