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 |
我只需要删除顶部和底部图形(构面)中行之间的所有垂直空间。例如,由于 id 编号 15 在对照组中,因此她在治疗组中不应该有一行。
谢谢,
赛斯
1 2 | library("grid") p + opts(panel.margin=unit(0,"pt")) |
编辑:经过进一步澄清
删除了错误的空格。您想要的是更改您的
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) |