ggplot geom_tile与facet的间距

时间:2012-03-08 21:31:55

标签: r ggplot2

我正在尝试使用x轴上的两个离散变量对多面ggplot进行排序。问题是我想让垂直相邻的条目全部接触。目前,行之间存在空间,基于该因子在顶部图中与底部的哪个级别。抱歉,这个可重复的例子有点冗长。

npats=20   

simsympt=c(id=1,date=1,tx="control",sympt=0) 

for(i in 1:npats)

 {   days=abs(round(rnorm(1,100,40),0))
     id=rep(as.character(i),days)
     date=1:days
     tx=rep(sample(c("control","treatment"),1),days)
     sympt= sample(0:10, days,p=c(12,3,3,2,1,1,1,1,1,1,1),rep=T)

   simsympt=      rbind(simsympt,      cbind(id,date,tx,sympt) )
  }
       ####tidy things up a bit   
     simsympt=data.frame(simsympt)[-1,]
     colnames(simsympt)=c('id','date','tx','level')
     simsympt$date=as.numeric(as.character(simsympt$date))
     simsympt$level=as.numeric(as.character(simsympt$level))
     #simsympt$id=as.numeric(as.character(simsympt$id))

  head(simsympt)

##now the important stuff

 p <- ggplot(simsympt, aes(x=date,y=id))    
 p=   p + geom_tile(aes(fill=level)) +   
      facet_grid(tx~.,drop=T,space="free")+
      scale_y_discrete(expand=c(0,0),drop=T)
 p

No description here

我只需要删除顶部和底部图形(facet)中行之间的所有垂直空间。例如,由于id号15在对照组中,因此在治疗组中不应该有她的行。 谢谢, 塞特

1 个答案:

答案 0 :(得分:11)

library("grid")
p + opts(panel.margin=unit(0,"pt"))

编辑:进一步澄清之后

删除了错误的空间。您想要的是更改facet_grid来电,以包含scales="free"参数。

p <- ggplot(simsympt, aes(x=date,y=id))    
p=   p + geom_tile(aes(fill=level)) +   
     facet_grid(tx~.,drop=T,space="free",scales="free")+
     scale_y_discrete(expand=c(0,0),drop=T)

enter image description here