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>
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>
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>
sns.pairplot(data=df, hue="file_name")
<seaborn.axisgrid.PairGrid at 0x2504a5fba60>
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>
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