ggplot2 : heatmap d'une matrice de corrélation - Logiciel R et visualisation de données
- Pr?parer les donn?es
- Calculer la matrice de corr?lation
- Cr?er le heatmap de corr?lation avec ggplot2
- Obtenir les triangles inf?rieur et sup?rieur de la matrice de corr?lation
- Heatmap de matrice de corr?lation personnalis?
- R?organiser la matrice de corr?lation
- Ajouter les coefficients de corr?lation sur le heatmap
- Infos
Ce tutoriel d?crit comment calculer et visualiser une matrice de corr?lation en utilisant le logiciel R et le package ggplot2.
Pr?parer les donn?es
Le jeu de donn?es mtcars est utilis? dans les exemples ci-dessous.
mydata <- mtcars[, c(1,3,4,5,6,7)]
head(mydata)
## mpg disp hp drat wt qsec
## Mazda RX4 21.0 160 110 3.90 2.620 16.46
## Mazda RX4 Wag 21.0 160 110 3.90 2.875 17.02
## Datsun 710 22.8 108 93 3.85 2.320 18.61
## Hornet 4 Drive 21.4 258 110 3.08 3.215 19.44
## Hornet Sportabout 18.7 360 175 3.15 3.440 17.02
## Valiant 18.1 225 105 2.76 3.460 20.22
Calculer la matrice de corr?lation
La matrice de corr?lation peut ?tre cr??e en utilisant la fonction cor() de R:
cormat <- round(cor(mydata),2)
head(cormat)
## mpg disp hp drat wt qsec
## mpg 1.00 -0.85 -0.78 0.68 -0.87 0.42
## disp -0.85 1.00 0.79 -0.71 0.89 -0.43
## hp -0.78 0.79 1.00 -0.45 0.66 -0.71
## drat 0.68 -0.71 -0.45 1.00 -0.71 0.09
## wt -0.87 0.89 0.66 -0.71 1.00 -0.17
## qsec 0.42 -0.43 -0.71 0.09 -0.17 1.00
Lire plus sur la visualisation des donn?es de matrice de corr?lation : visualisation de matrice de corr?lation dans R
Cr?er le heatmap de corr?lation avec ggplot2
Le package reshape est n?cessaire pour ?fondre? la matrice de corr?lation:
library(reshape2)
melted_cormat <- melt(cormat)
head(melted_cormat)
## Var1 Var2 value
## 1 mpg mpg 1.00
## 2 disp mpg -0.85
## 3 hp mpg -0.78
## 4 drat mpg 0.68
## 5 wt mpg -0.87
## 6 qsec mpg 0.42
La fonction geom_tile() [ package ggplot2] est utilis?e pour visualiser la matrice de corr?lation:
library(ggplot2)
ggplot(data = melted_cormat, aes(x=Var1, y=Var2, fill=value)) +
geom_tile()
Le graphique par d?faut est tr?s laid. Nous verrons dans les prochaines sections, comment changer l?apparence du heatmap.
Notez que, si vous avez beaucoup de donn?es, il est pr?f?rable d?utiliser la fonction geom_raster() qui peut ?tre beaucoup plus rapide.
Obtenir les triangles inf?rieur et sup?rieur de la matrice de corr?lation
Notez qu?une matrice de corr?lation contient des informations redondantes. Nous allons utiliser les fonctions ci-dessous pour mettre la moiti? ? NA.
Fonctions helpers :
# Obtenir le triangle inf?rieur
get_lower_tri<-function(cormat){
cormat[upper.tri(cormat)] <- NA
return(cormat)
}
# Obtenir le triangle sup?rieur
get_upper_tri <- function(cormat){
cormat[lower.tri(cormat)]<- NA
return(cormat)
}
Utilisation :
upper_tri <- get_upper_tri(cormat)
upper_tri
## mpg disp hp drat wt qsec
## mpg 1 -0.85 -0.78 0.68 -0.87 0.42
## disp NA 1.00 0.79 -0.71 0.89 -0.43
## hp NA NA 1.00 -0.45 0.66 -0.71
## drat NA NA NA 1.00 -0.71 0.09
## wt NA NA NA NA 1.00 -0.17
## qsec NA NA NA NA NA 1.00
Heatmap de matrice de corr?lation personnalis?
Fondre les donn?es de corr?lations et supprimer les lignes contenant des NA:
# Fondre la matrice de corr?lation
library(reshape2)
melted_cormat <- melt(upper_tri, na.rm = TRUE)
# Heatmap
library(ggplot2)
ggplot(data = melted_cormat, aes(Var2, Var1, fill = value))+
geom_tile(color = "white")+
scale_fill_gradient2(low = "blue", high = "red", mid = "white",
midpoint = 0, limit = c(-1,1), space = "Lab",
name="Pearson\nCorrelation") +
theme_minimal()+
theme(axis.text.x = element_text(angle = 45, vjust = 1,
size = 12, hjust = 1))+
coord_fixed()
Dans la figure ci-dessus :
- Les corr?lations n?gatives sont de couleur bleu et les corr?lations positives en rouge. La fonction scale_fill_gradient2 est utilis? avec l?argument limit = c(-1,1) ?tant donn?e que le coefficient de corr?lation varie entre -1 et 1.
- coord_fixed(): cette fonction assure qu?une unit? sur l?axe des x repr?sente la m?me longueur qu?une unit? sur l?axe des y.
R?organiser la matrice de corr?lation
Cette section d?crit comment r?organiser la matrice de corr?lation en fonction du coefficient de corr?lation. Ceci est utile pour identifier des profils cach?s dans la matrice. La fonction hclust pour hierarchical clustering est utilis?e dans l?exemple ci-dessous.
Fonction helper pour r?organiser la matrice de corr?lation:
reorder_cormat <- function(cormat){
# Utiliser la corr?lation entre les variables
# comme m?sure de distance
dd <- as.dist((1-cormat)/2)
hc <- hclust(dd)
cormat <-cormat[hc$order, hc$order]
}
Visualisation de la matrice de corr?lation r?ordonn?e:
# Reordonner la matrice de corr?lation
cormat <- reorder_cormat(cormat)
upper_tri <- get_upper_tri(cormat)
# Fondre la matrice de corr?lation
melted_cormat <- melt(upper_tri, na.rm = TRUE)
# Cr?er un ggheatmap
ggheatmap <- ggplot(melted_cormat, aes(Var2, Var1, fill = value))+
geom_tile(color = "white")+
scale_fill_gradient2(low = "blue", high = "red", mid = "white",
midpoint = 0, limit = c(-1,1), space = "Lab",
name="Pearson\nCorrelation") +
theme_minimal()+ # minimal theme
theme(axis.text.x = element_text(angle = 45, vjust = 1,
size = 12, hjust = 1))+
coord_fixed()
# Afficher heatmap
print(ggheatmap)
Ajouter les coefficients de corr?lation sur le heatmap
- Utiliser geom_text() pour ajouter les coefficients de corr?lation sur le graphe
- Utiliser un th?me vierge (enlever les ?tiquettes des axes, les grilles, le fond et la graduation des axes)
- Utiliser guides() pour changer la position du titre de la l?gende
ggheatmap +
geom_text(aes(Var2, Var1, label = value), color = "black", size = 4) +
theme(
axis.title.x = element_blank(),
axis.title.y = element_blank(),
panel.grid.major = element_blank(),
panel.border = element_blank(),
panel.background = element_blank(),
axis.ticks = element_blank(),
legend.justification = c(1, 0),
legend.position = c(0.6, 0.7),
legend.direction = "horizontal")+
guides(fill = guide_colorbar(barwidth = 7, barheight = 1,
title.position = "top", title.hjust = 0.5))
Lire plus sur la visualisation des donn?es de matrice de corr?lation : visualisation de matrice de corr?lation dans R
Infos
Cette analyse a ?t? faite en utilisant le logiciel R (ver. 3.2.1) et le package ggplot2 (ver. 1.0.1)
Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
Montrez-moi un peu d'amour avec les like ci-dessous ... Merci et n'oubliez pas, s'il vous plaît, de partager et de commenter ci-dessous!
Recommended for You!
Click to follow us on Facebook:
Comment this article by clicking on "Discussion" button (top-right position of this page)