Не удалось изменить фон подплота при генерации тепловой карты сгруппированной корреляционной матрицы с использованием фасета ggplot2 - PullRequest
0 голосов
/ 23 февраля 2020

Я новичок ie для stack Overflow и языка.

Вот моя проблема. Теперь у меня есть с одной переменной, называемой Тип, и другими 14 переменными, чья матрица корреляции должна быть рассчитана.

набор исходных данных

У меня уже есть общий с использованием , и тема по умолчанию theme_grey, но для меня это хорошо. Код:

m<- melt(get_lower_tri(round(cor(xrf[3:16], method = 'pearson', use = 'pairwise.complete.obs'), 2)),na.rm = TRUE)
ggplot(m, aes(Var1, Var2, fill = value)) + 
  geom_tile() + 
  scale_fill_gradient2(low = 'skyblue4', 
                       high = 'coral2', 
                       mid = 'white', 
                       midpoint = 0,
                       limit = c(-1, 1), 
                       space = "Lab", 
                       name = 'Person\nCorrelation') + 
  theme_grey()+
  coord_fixed() +
  theme(axis.title = element_blank())

Результат в порядке, и фон выглядит хорошо для просмотра.

overall Correlation Matrix

Но когда мне удалось сгенерировать grouped correlation matrix heatmap Я обнаружил, что как бы я ни старался (используя theme(panel.background = element_rect()) или theme(panel.background = element_blank())), subplot backgrounds не изменится и останется таким уродливым серым, который даже отличается от общего.

Facet correlation matrix Вот мой код:


Type = rep(c('(a)', '(b)', '(c)','(d)', '(e)', '(f)', '(g)', '(h)', '(i)', '(j)'), each = 14^2)

# Get lower triangle of the correlation matrix
get_lower_tri<-function(x){
  x[upper.tri(x)] <- NA
  return(x)
}

df2 <- do.call(rbind, lapply(split(xrf, xrf$Type), 
                             function(x) melt(get_lower_tri(round(cor(x[3:16], method = 'pearson', use = 'pairwise.complete.obs'), 2)),na.rm = FALSE)))

my_cors <- cbind(Type,df2)

my_cors %>% 
  ggplot(aes(Var1, Var2, fill = value)) + 
  geom_tile() + 
  scale_fill_gradient2(low = 'skyblue4', 
                       high = 'coral2', 
                       mid = 'white', 
                       midpoint = 0,
                       limit = c(-1, 1), 
                       space = "Lab", 
                       name = 'Person\nCorrelation') + 
  theme_grey()+
  coord_fixed() +
  theme(axis.title = element_blank(),
        panel.background = element_rect(fill = 'grey90',colour = NA))+
  facet_wrap("Type",ncol = 5, nrow = 2)

Разве фон субплота фасета не такой же, как общий, если используется та же тема? И как я могу это изменить?

Обновление: извините! Я впервые поднимаю вопрос, и он не очень хороший!

xrf - мой оригинальный набор данных ... Но теперь я понял, почему благодаря Тьебо и тем, кто комментирует мои ошибочные вопросы. очень поучительно для меня !!

scale_fill_gredient2(...,na.value = 'transparent') решит это. Значение по умолчанию для этого параметра "grey50", которое я выбрал в качестве цвета фона.

Мне очень жаль, что я спросил такой глупый вопрос, и я действительно очень благодарен вам, ребята, за хороший комментарий для ладьи ie! Спасибо, ребята!

...