关于 r:ggplot geom_tile 带刻面的间距

ggplot geom_tile spacing with facets

我正在尝试制作一个按 x 轴上的两个离散变量排序的多面 ggplot。问题是我想让垂直相邻的条目全部接触。目前,行之间存在空间,具体取决于因子的哪些水平位于顶部和底部。抱歉,这个可重现的例子有点冗长。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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

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


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

编辑:经过进一步澄清

删除了错误的空格。您想要的是更改您的 facet_grid 调用以包含 scales="free" 参数。

1
2
3
4
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