Les spaghetti plots, ou plots en fagot, ou encore line plots sont des outils de visualisation qui permettent de suivre des trajectoires individuelles, au cours du temps, ou au travers de différentes conditions. En voici un exemple :
Il n’est pas toujours facile de les réaliser avec ggplot2 car les données n’ont pas toujours le bon format.
Lorsque des mesures sont réalisées à différents temps, les données sont souvent sous une forme “wide”, c’est-à-dire avec autant de colonnes que de temps de mesures. Comme ceci, par exemple :
Or, pour réaliser un spaghetti plot avec ggplot2, les données doivent être sous un format long, c’est-à-dire avec les mesures réalisées aux différents temps, positionnées les une sous les autres. Autrement dit avec :
Remarques : Ces données sont celles du jeu de données « sleepstudy », elles sont inclues dans le package lme4.
Ces données concernent une étude sur la privation de sommeil. Dix-huit sujets sont suivis au cours du temps. Leur temps de réaction moyen par jour (en millisecondes) est mesuré.
Lorsque les données sont au format long, il est relativement facile de réaliser un spaghetti plot avec ggplot2.
Pour cela, il est nécessaire :
geom_line()
aes(group=Subject)
ggplot(sleep_long, aes(y=Reaction, x=Days))+
geom_point()+
geom_line(aes(group=Subject))
On peut ensuite utiliser une couleur différente par Sujet afin de mieux visualiser les trajectoires (en ajoutant colour=Subject dans la fonction aes de la couche ggplot())
ggplot(sleep_long, aes(y=Reaction, x=Days, colour=Subject))+
geom_point()+
geom_line(aes(group=Subject))+
scale_x_continuous(breaks=0:9)
Dans cette situation, il existe deux solutions :
Pour cela, nous pouvons employer la fonction pivot_longer() du package tidyr.
Les principaux arguments de la fonction pivot_longer() sont :
.
sleep_long <- sleep_wide %>%
pivot_longer(cols=-Subject,
names_to="Day",
values_to="Reaction",
names_prefix="Day")
Et donc ensuite, nous pouvons employer ggplot2 pour réaliser le spaghetti plot, avec le code vu précédemment.
Cette fonction permet de réaliser des spaghetti plots, avec des données au format wide. Les arguments sont :
library(GGally)
ggparcoord(sleep_wide,
columns = 2:ncol(sleep_wide),
groupColumn = 1,
showPoints=TRUE,
scale="globalminmax",
)
Cela peut être intéressant de standardiser des données lorsqu’il s’agit de variables différentes (voir ci dessous)
Vous trouverez plus d’informations sur la page d’aide de la fonction ggparcoord.
ggparcoord(iris,
columns = 1:4,
showPoints=TRUE,
groupColumn = 5,
scale="globalminmax",
)
Idem avec standardisation
ggparcoord(iris,
columns = 1:4,
showPoints=TRUE,
groupColumn = 5,
scale="std",
)
Avec des boxplots :
Vous trouverez d’autres exemples de spaghetti plots réalisés avec la fonction ggparcoord, en cliquant ici.
Si cet article vous a plus, ou vous a été utile, et si vous le souhaitez, vous pouvez soutenir ce blog en faisant un don sur sa page Tipeee
Enregistrez vous pour recevoir gratuitement mes fiches « aide mémoire » (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.