Я пытаюсь создать тепловую карту в R. Я могу сделать базовую карту c, но я пытаюсь сделать только карту нижнего треугольника, которая более подходящего цвета.
Это код, который я Я использую:
# heatmap
library(reshape2)
cormat <- data
cormat <- as.data.frame(cormat)
melted_cormat <- melt(cormat)
head(melted_cormat)
library(ggplot2)
ggplot(data = melted_cormat, aes(x=x, y=variable, fill=value)) +
geom_tile()
### extra now
get_lower_tri<-function(cormat){
cormat[upper.tri(cormat)] <- NA
return(cormat)
}
get_upper_tri <- function(cormat){
cormat[lower.tri(cormat)]<- NA
return(cormat)
}
upper_tri <- get_upper_tri(cormat)
upper_tri
####full
# Melt the correlation matrix
library(reshape2)
melted_cormat <- melt(upper_tri, na.rm = TRUE)
# Heatmap
library(ggplot2)
ggplot(data = melted_cormat, aes(x=x, y=variable, 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()
где формат:
> cormat
x a b c d e f g h i
1 a 1.00 0.77 0.99 0.81 0.87 0.83 0.99 0.98 0.99
2 b 0.77 1.00 0.78 0.92 0.87 0.82 0.78 0.90 0.71
3 c 0.99 0.78 1.00 0.81 0.93 0.83 0.99 0.98 0.99
4 d 0.81 0.92 0.81 1.00 0.99 0.99 0.82 0.99 0.80
5 e 0.87 0.87 0.93 0.99 1.00 0.99 0.95 0.98 0.93
6 f 0.83 0.82 0.83 0.99 0.99 1.00 0.84 0.98 0.83
7 g 0.99 0.78 0.99 0.82 0.95 0.84 1.00 0.99 0.99
8 h 0.98 0.90 0.98 0.99 0.98 0.98 0.99 1.00 0.98
9 i 0.99 0.71 0.99 0.80 0.93 0.83 0.99 0.98 1.00
При попытке получить следующий код ошибки:
Не знаю, как автоматически выбрать масштаб для объект типа tbl_df / tbl / data.frame. По умолчанию для непрерывного. Ошибка: Эстетика должна иметь длину 1 или совпадать с данными (81): x, y, заполните
Любая помощь будет принята с благодарностью! Спасибо