Introduction à Seaborn#

Seaborn est une bibliothèque pour créer des graphiques statistiques en Python. Elle s’appuie sur matplotlib et s’intègre étroitement avec les structures de données de pandas.

import seaborn as sns

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

Nuages de points avec seaborn#

Nous commençons par charger un tableau de mesures dans 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

À partir de ce tableau, nous pouvons créer un nuage de points du rapport d’aspect par rapport à l’intensité moyenne.

sns.scatterplot(data=df, x="aspect_ratio", y="intensity_mean")
<AxesSubplot: xlabel='aspect_ratio', ylabel='intensity_mean'>
../_images/1c6c2e79ba521336f9e62358c8c6c9d4076f798ebf70d8ee8072f08e476dc7d7.png

Nous pouvons intégrer et visualiser d’autres caractéristiques en fournissant quelques arguments supplémentaires. Par exemple, nous pouvons utiliser la mesure de la surface pour encoder la taille des points de données, et la longueur de l’axe principal peut être utilisée pour visualiser les points de données en différentes couleurs à partir de la palette de couleurs 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'>
../_images/17600232c00ff8cb90bc9b89e6cda53796661d3c0ddf042d45614e4fea4dff4b.png

La fonction scatterplot est une fonction au niveau des axes. Cela signifie que si nous voulons ajouter des sous-graphiques, nous devons d’abord créer une figure et des axes à partir de matplotlib et passer les poignées d’axes.

Nuages de points avec sous-graphiques#

Seaborn dispose également de fonctions au niveau de la figure, où les sous-graphiques sont un argument.

Dans l’exemple ci-dessous, nous utilisons la fonction relplot (de relationship) et séparons les fichiers en fournissant ‘file_name’ à l’argument col. Cela nous permet de voir les mesures séparées par le fichier image à partir duquel les mesures ont été prises.

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>
../_images/48f149f0c185d0ce6743bf7dac15b14e1df98b575d1545a0d987f1b24b7566e2.png