我正在尝试使用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
我只需要删除顶部和底部图形(facet)中行之间的所有垂直空间。例如,由于id号15在对照组中,因此在治疗组中不应该有她的行。 谢谢, 塞特
答案 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)