Как мне создать тепловую карту в R? - PullRequest
0 голосов
/ 26 января 2020

Я пытаюсь создать тепловую карту в 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, заполните

Любая помощь будет принята с благодарностью! Спасибо

...