Как обозначить символьную переменную в матрице тепловой карты корреляции в R? - PullRequest
0 голосов
/ 25 июня 2019

Рассмотрим следующие фреймы данных:

> df1
      c1    c2   c3
c1  1.00 -0.56 0.72
c2 -0.56  1.00 0.13
c3  0.72  0.13 1.00
> df2
      c1    c2    c3
c1     0 0, -4  0, 3
c2 0, -4     0 0, -2
c3  0, 3 0, -2     0

df1 хранит значения корреляции, а df2 хранит некоторые значения, которые я хочу показать их вместе со значениями корреляции.На самом деле я хочу создать корреляционную матрицу тепловых карт следующим образом:

enter image description here

Я написал следующий код:

#Lower triangle of a matrix
get_lower_tri<-function(matrix){
  matrix[upper.tri(matrix)] <- NA
  return(matrix)
}

lower_tri <- get_lower_tri(as.matrix(df1))
lower_lagTri <- get_lower_tri(as.matrix(df2))

library(reshape2)
melted_cormat <- melt(lower_tri, na.rm = TRUE)
melted_lagmat <- melt(lower_lagTri, na.rm = TRUE)

#Heatmap
library("forcats")
ggheatmap <- ggplot(data = melted_cormat, aes(Var2, fct_rev(Var1), fill = value)) + 
  geom_tile(color = "white") + xlab("X") + ylab("Y") +
  scale_fill_gradient2(low = "blue", high = "red", mid = "white", 
                       midpoint = 0, limit = c(-1,1), space = "Lab", 
                       name="Correlation") +
  theme_minimal()+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, 
                                   size = 12, hjust = 1)) +
  coord_fixed()

ggheatmap + 
  geom_text(data = melted_lagmat, aes(Var2, fct_rev(Var1), label = value), color = "black", size = 4) +
  theme(
    axis.title.x = element_blank(),
    axis.title.y = element_blank(),
    panel.grid.major = element_blank(),
    panel.border = element_blank(),
    panel.background = element_blank(),
    axis.ticks = element_blank())

НоЯ получаю эту ошибку:

Error: Discrete value supplied to continuous scale
...