Een correlatie-heatmap maken in r (met voorbeeld)
U kunt de volgende basissyntaxis gebruiken om een correlatie-heatmap in R te maken:
#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())
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: maak een correlatie-heatmap in R
Stel dat we het volgende dataframe in R hebben dat verschillende statistieken toont voor acht verschillende basketbalspelers:
#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
Stel dat we een correlatie-heatmap willen maken om decorrelatiecoëfficiënt tussen elke paarsgewijze combinatie van variabelen in het dataframe te visualiseren.
Voordat we de correlatie-heatmap maken, moeten we eerst de correlatiecoëfficiënt tussen elke variabele berekenen met behulp van cor() en vervolgens de resultaten transformeren in een bruikbaar formaat met behulp van de melt()- functie reshape2 van het pakket:
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 assist points -0.27 3 rebound points -0.16 4 block points 0.10 5 assist points -0.27 6 assists assists 1.00
Vervolgens kunnen we de functie geom_tile() uit het ggplot2- pakket gebruiken om een correlatie-heatmap te maken:
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())
Het resultaat is een correlatie-heatmap waarmee we de correlatiecoëfficiënt tussen elke paarsgewijze combinatie van variabelen kunnen visualiseren.
In deze specifieke hittekaart krijgen de correlatiecoëfficiënten de volgende kleuren:
- Blauw als ze gesloten zijn tot -1
- Wit als ze gesloten zijn naar 0
- Rood als ze dichtbij 1 zijn
Voel je vrij om de gewenste kleuren te gebruiken voor de lage en hoge argumenten in de scale_fill_gradient2() functie.
U kunt bijvoorbeeld ‚rood‘ gebruiken voor een lage waarde en ‚groen‘ voor een hoge waarde:
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())
Opmerking : u kunt ook hexadecimale kleurcodes opgeven die u wilt gebruiken als u nog meer controle wilt over de exacte kleuren in de correlatie-hittekaart.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in ggplot2 kunt uitvoeren:
Hoe aslabels te roteren in ggplot2
Hoe aseinden in ggplot2 in te stellen
Hoe aslimieten in ggplot2 in te stellen
Hoe legendalabels in ggplot2 te veranderen