Comment créer une carte thermique de corrélation dans R (avec exemple)
Vous pouvez utiliser la syntaxe de base suivante pour créer une carte thermique de corrélation dans R :
#calculate correlation between each pairwise combination of variables cor_df <- round(cor(df), 2) #melt the data frame melted_cormat <- melt(cor_df) #create correlation heatmap ggplot(data = melted_cormat, aes(x=Var1, y=Var2, fill=value)) + geom_tile() + geom_text(aes(Var2, Var1, label = value), size = 5) + scale_fill_gradient2(low = "blue", high = "red", limit = c(-1,1), name="Correlation") + theme(axis.title.x = element_blank(), axis.title.y = element_blank(), panel.background = element_blank())
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : créer une carte thermique de corrélation dans R
Supposons que nous ayons le bloc de données suivant dans R qui montre diverses statistiques pour huit joueurs de basket différents :
#create data frame
df <- data.frame(points=c(22, 25, 30, 16, 14, 18, 29, 22),
assists=c(4, 4, 5, 7, 8, 6, 7, 12),
rebounds=c(10, 7, 7, 6, 8, 5, 4, 3),
blocks=c(12, 4, 4, 6, 5, 3, 8, 5))
#view data frame
df
points assists rebounds blocks
1 22 4 10 12
2 25 4 7 4
3 30 5 7 4
4 16 7 6 6
5 14 8 8 5
6 18 6 5 3
7 29 7 4 8
8 22 12 3 5
Supposons que nous souhaitions créer une carte thermique de corrélation pour visualiser le coefficient de corrélation entre chaque combinaison par paire de variables dans le bloc de données.
Avant de créer la carte thermique de corrélation, nous devons d’abord calculer le coefficient de corrélation entre chaque variable à l’aide de cor() puis transformer les résultats dans un format utilisable à l’aide de la fonction melt() du package reshape2 :
library(reshape2) #calculate correlation coefficients, rounded to 2 decimal places cor_df <- round(cor(df), 2) #melt the data frame melted_cor <- melt(cor_df) #view head of melted data frame head(melted_cor) Var1 Var2 value 1 points points 1.00 2 assists points -0.27 3 rebounds points -0.16 4 blocks points 0.10 5 points assists -0.27 6 assists assists 1.00
Ensuite, nous pouvons utiliser la fonction geom_tile() du package ggplot2 pour créer une carte thermique de corrélation :
library(ggplot2) #create correlation heatmap ggplot(data = melted_cor, aes(x=Var1, y=Var2, fill=value)) + geom_tile() + geom_text(aes(Var2, Var1, label = value), size = 5) + scale_fill_gradient2(low = "blue", high = "red", limit = c(-1,1), name="Correlation") + theme(axis.title.x = element_blank(), axis.title.y = element_blank(), panel.background = element_blank())
Le résultat est une carte thermique de corrélation qui nous permet de visualiser le coefficient de corrélation entre chaque combinaison de variables par paire.
Dans cette carte thermique particulière, les coefficients de corrélation prennent les couleurs suivantes :
- Bleu s’ils sont proches de -1
- Blanc s’ils sont proches de 0
- Rouge s’ils sont proches de 1
N’hésitez pas à utiliser les couleurs de votre choix pour les arguments bas et haut dans la fonction scale_fill_gradient2() .
Par exemple, vous pouvez utiliser « rouge » pour la valeur faible et « vert » pour la valeur élevée :
library(ggplot2) #create correlation heatmap ggplot(data = melted_cor, aes(x=Var1, y=Var2, fill=value)) + geom_tile() + geom_text(aes(Var2, Var1, label = value), size = 5) + scale_fill_gradient2(low = "red", high = "green", limit = c(-1,1), name="Correlation") + theme(axis.title.x = element_blank(), axis.title.y = element_blank(), panel.background = element_blank())
Remarque : Vous pouvez également spécifier des codes de couleur hexadécimaux à utiliser si vous souhaitez encore plus de contrôle sur les couleurs exactes dans la carte thermique de corrélation.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans ggplot2 :
Comment faire pivoter les étiquettes des axes dans ggplot2
Comment définir des sauts d’axe dans ggplot2
Comment définir les limites de l’axe dans ggplot2
Comment changer les étiquettes de légende dans ggplot2