Я новичок ie для stack Overflow
и r языка.
Вот моя проблема. Теперь у меня есть фрейм данных с одной переменной, называемой Тип, и другими 14 переменными, чья матрица корреляции карта тепла должна быть рассчитана.
набор исходных данных
У меня уже есть общий формат с использованием ggplot2 , и тема по умолчанию 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())
Результат в порядке, и фон выглядит хорошо для просмотра.
Но когда мне удалось сгенерировать grouped correlation matrix heatmap
Я обнаружил, что как бы я ни старался (используя theme(panel.background = element_rect())
или theme(panel.background = element_blank())
), subplot backgrounds
не изменится и останется таким уродливым серым, который даже отличается от общего.
Вот мой код:
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! Спасибо, ребята!