切面会在热图中混淆值标签(ggplot2)

时间:2016-04-05 01:08:40

标签: r ggplot2 heatmap facet

我正在使用ggplot2制作热图。我想将值本身放在热图框中,但是我发现虽然在没有刻面的情况下工作正常,但只要我面对,数字就会出现在所有错误的框中 - 请参阅附图。在刻面时如何使数字保持在正确的方框中的任何提示?

另外,还有其他一些小问题:如何在没有刻面的情况下更改拼贴尺寸;改变方框中值文本的颜色(< - 尝试了明显的解决方案,但似乎没有用......)

谢谢大家!

代码(可以看到方面被注释掉的地方):

fpdata<-read.csv("fp.csv",header=T)
fpdata$Dimension=factor(fpdata$Dimension,levels(fpdata$Dimension)[c(4,1,3,2,5)])
fpdata$Trait=factor(fpdata$Trait,levels(fpdata$Trait)[c(22,15,16,3,4,9,21,20,10,14,6,2,1,
                                                        13,8,11,12,17,24,25,18,5,23,19,7)])
matrix <- melt(fpdata)
matrix
matrix$value[is.na(matrix$value)] <- 2
matrix


p3 <- ggplot(data = matrix, aes(variable, Trait, fill = value))+
  geom_tile(color = "white")+
  scale_fill_gradient2(low = "blue", high = "firebrick", mid = "deepskyblue", 
                         midpoint = 0.6, limit = c(0.6,1), space = "Lab", 
                         name="Factor Loadings")+labs(x = "Reduction #")+
    geom_text(aes(label=ifelse(matrix$value<2,matrix$value," ")))
  ##+facet_grid(~Dimension, scale="free") 

p3 <- p3 +  
  theme (axis.title.x = element_text(size=20),
         axis.title.y = element_text(size=20),
         axis.text.x = element_text(angle = 0, vjust = 1, size = 14, hjust = 0.5),
         axis.text.y = element_text(size=16),
         panel.grid.major = element_blank(),
         panel.grid.minor = element_blank(),
         legend.title = element_text(size=16),
         legend.text = element_text(size=14),
         strip.text.x = element_text(size=13, face="bold"))+coord_fixed()
p3

没有分面的热图

enter image description here

与Facet的热图

enter image description here

1 个答案:

答案 0 :(得分:0)

df <- data.frame(trait = sample(letters, 15),
                 dimension = rep(LETTERS[1:5], 3), 
                 variable = paste0('R', 1:3), 
                 value = runif(15))

ggplot(df, aes(variable, trait, fill = value)) +
  geom_tile(aes(fill = ifelse(value > 0.25, value, NA))) +
  geom_text(aes(label = ifelse(value > 0.25, round(value, 2), NA))) +
  facet_grid(~dimension, scales = 'free')

可重复的示例我希望在某种程度上反映您的数据。如上所述,在这种情况下,您的输入(df $ value)中已定义了值。因此,您可以直接将其称为裸(未引用)符号。