Jak utworzyć mapę cieplną korelacji w r (z przykładem)


Aby utworzyć mapę cieplną korelacji w R, możesz użyć następującej podstawowej składni:

 #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())

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: utwórz mapę cieplną korelacji w R

Załóżmy, że mamy następującą ramkę danych w R, która pokazuje różne statystyki dla ośmiu różnych koszykarzy:

 #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

Załóżmy, że chcemy utworzyć mapę cieplną korelacji, aby zwizualizować współczynnik korelacji pomiędzy każdą kombinacją par zmiennych w ramce danych.

Przed utworzeniem mapy cieplnej korelacji musimy najpierw obliczyć współczynnik korelacji między każdą zmienną za pomocą cor() , a następnie przekształcić wyniki do użytecznego formatu za pomocą funkcji Melt() pakietu 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 assist points -0.27
3 rebound points -0.16
4 block points 0.10
5 assist points -0.27
6 assists assists 1.00

Następnie możemy użyć funkcji geom_tile() z pakietu ggplot2 , aby utworzyć mapę cieplną korelacji:

 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()) 

mapa cieplna korelacji w R

Rezultatem jest mapa cieplna korelacji, która pozwala nam zwizualizować współczynnik korelacji pomiędzy każdą parą kombinacji zmiennych.

Na tej konkretnej mapie cieplnej współczynniki korelacji przyjmują następujące kolory:

  • Niebieski, jeśli są zamknięte do -1
  • Białe , jeśli są zamknięte do 0
  • Czerwony , jeśli są blisko 1

Możesz swobodnie używać dowolnych kolorów dla niskich i wysokich argumentów w funkcjiscale_fill_gradient2 () .

Na przykład możesz użyć „czerwonego” dla niskiej wartości i „zielonego” dla wysokiej wartości:

 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()) 

mapa cieplna korelacji w R z niestandardowymi kolorami

Uwaga : Możesz także określić szesnastkowe kody kolorów, które mają być używane, jeśli chcesz mieć jeszcze większą kontrolę nad dokładnymi kolorami na mapie cieplnej korelacji.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w ggplot2:

Jak obracać etykiety osi w ggplot2
Jak ustawić przerwy osi w ggplot2
Jak ustawić limity osi w ggplot2
Jak zmienić etykiety legendy w ggplot2

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *