Vues multivariées#

Dans ce notebook, nous montrons quelques exemples de la façon dont on peut avoir des graphiques de différents types dans une figure, comme avoir un nuage de points avec des distributions marginales ou même un graphique multivarié avec des relations par paires de toutes les propriétés dans un tableau.

Comme ces graphiques impliquent la gestion de sous-graphiques, ce sont toutes des fonctions au niveau de la figure.

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

Nous commençons par charger un tableau de mesures dans un DataFrame pandas.

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

Tracer des distributions conjointes et marginales#

Pour avoir une distribution conjointe de deux variables avec les distributions marginales sur les côtés, nous pouvons utiliser jointplot.

sns.jointplot(data=df, x="aspect_ratio", y="area")
<seaborn.axisgrid.JointGrid at 0x250479ad070>
../_images/e316f02c0fda494cf9fe2566d2cacbf5ee40b1b66c4f3f47948e12c55222d17f.png

Il est possible de séparer les groupes en passant une propriété catégorielle à l’argument hue. Cela a un effet sur la distribution marginale, les transformant d’histogrammes en graphiques kde.

sns.jointplot(data=df, x="aspect_ratio", y="area", hue = 'file_name')
<seaborn.axisgrid.JointGrid at 0x250479c9d90>
../_images/d040ee1b6c532bdb4ee490749079e37a86a0c5425e4b0d19e016a39399aaa720.png

Tracer de nombreuses distributions à la fois#

Les exemples ci-dessus affichaient un graphique avec la relation entre deux propriétés. Cela peut être étendu davantage avec la fonction pairplot

sns.pairplot(data=df)
<seaborn.axisgrid.PairGrid at 0x2504805e730>
../_images/12bc0e22590ffd1a5fc3df71fb49660a04996d76cf90049e783d36c034a2764b.png
sns.pairplot(data=df, hue="file_name")
<seaborn.axisgrid.PairGrid at 0x2504a5fba60>
../_images/c9dc8877e3fcd1a782ebdf7a87b078ec859ecf3375eb1901392f07be67b1d73a.png

Si vous avez trop de points, afficher chaque point individuel peut produire des graphiques trop pollués. Une visualisation alternative dans ce cas pourrait être un graphique d’histogramme 2D. Nous pouvons faire cela en changeant l’argument kind en “hist”.

sns.pairplot(data=df, hue="file_name", kind = "hist")
<seaborn.axisgrid.PairGrid at 0x2504a613e50>
../_images/ca7cc54c099a3ec78b0af3f3f63269f64b93ae2bdebd685e8df46845b3b9ffeb.png

Exercice#

Vous avez peut-être remarqué que le pairplot est redondant dans certains graphiques car la diagonale supérieure affiche les mêmes relations en rotation.

Redessinez le pairplot pour n’afficher que la diagonale inférieure des graphiques.

Indice : explorez les propriétés du pairplot