Como criar um mapa de calor de correlação em r (com exemplo)
Você pode usar a seguinte sintaxe básica para criar um mapa de calor de correlação em 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())
O exemplo a seguir mostra como usar essa sintaxe na prática.
Exemplo: Crie um mapa de calor de correlação em R
Suponha que temos o seguinte quadro de dados em R que mostra várias estatísticas para oito jogadores de basquete diferentes:
#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
Suponha que queiramos criar um mapa de calor de correlação para visualizar o coeficiente de correlação entre cada combinação de pares de variáveis no quadro de dados.
Antes de criar o mapa de calor de correlação, primeiro precisamos calcular o coeficiente de correlação entre cada variável usando cor() e depois transformar os resultados em um formato utilizável usando a função melt() reshape2 do pacote:
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
A seguir, podemos usar a função geom_tile() do pacote ggplot2 para criar um mapa de calor de correlação:
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())
O resultado é um mapa de calor de correlação que nos permite visualizar o coeficiente de correlação entre cada combinação de variáveis aos pares.
Neste mapa de calor específico, os coeficientes de correlação assumem as seguintes cores:
- Azul se estiverem fechados para -1
- Branco se eles estiverem fechados em 0
- Vermelho se estiverem próximos de 1
Sinta-se à vontade para usar as cores que desejar para os argumentos baixo e alto na função scale_fill_gradient2() .
Por exemplo, você pode usar “vermelho” para valor baixo e “verde” para valor alto:
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())
Observação : você também pode especificar códigos de cores hexadecimais para usar se desejar ainda mais controle sobre as cores exatas no mapa de calor de correlação.
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns no ggplot2:
Como girar rótulos de eixo no ggplot2
Como definir quebras de eixo no ggplot2
Como definir limites de eixo no ggplot2
Como alterar os rótulos das legendas no ggplot2