垂直对齐ggplot2两个或多个图并更改其高度(使用热图图)

时间:2013-09-21 22:50:18

标签: r ggplot2

我正在努力在一页中绘制两个或更多的情节。其中一个图必须是热图图(正如在cookbook ggplot2书中所称),并且所有图的x轴必须​​完全对齐。我在挖掘之后(主要是在这里),我最终得到了以下脚本。它们垂直对齐,但我不能改变它们的高度。它遵循一个例子:

library(ggplot2)
library(grid)

dataheat=data.frame(day=rep(1:100,each=51),depth=rep(seq(0,-50,by=-1),100),z=runif(100*51))
data = data.frame(day=1:100,y=-15000*runif(200),sys=rep(c("hsoil","hleaf"),each=100))

pdf("rwu_r.pdf")

p1 =  ggplot(data,aes(x=day,y=y,linetype=sys)) + geom_line() + theme_bw()+
  theme(legend.position=c(0.85,0.8),legend.background=element_blank(),legend.key=element_blank(),axis.title.x=element_text(size=14)) +
  theme(plot.margin=unit(c(1,4,0,0.5),"lines"))+
  scale_linetype_discrete(name="",labels=c(hsoil="soil",hleaf="leaf")) +
  xlab("Day") + ylab("Pressure head, cm") + scale_x_continuous(expand=c(0,0),limits=c(0,100)) 


 p2 = ggplot(dataheat, aes(x=day,y=depth,fill=z)) +       
        geom_raster() +   xlab("Days") + ylab("Depth, cm") +       
      scale_x_continuous(expand=c(0,0),limits=c(0,100)) +
        scale_y_continuous(expand=c(0,0))# +
#        theme(plot.margin=unit(c(0, 0, 0.5, 0.5),"lines"))

g1 <- ggplotGrob(p1)
g2 <- ggplotGrob(p2)
g1 <- gtable::gtable_add_cols(g1, widths=unit(5,"mm"))
g <- gtable:::rbind_gtable(g1, g2, "first")

grid.draw(g)

dev.off()

现在我希望顶部曲线的高度是总高度的10%,第二个高度是总高度的85%。如果我改变第一个情节的主题(plot.margin = unit(c(1,4,0​​,0.5),“lines”))“,它也会改变第二个情节。

此外,我还想添加第三个与其他图对齐的图并控制其高度。

提前致谢。

0 个答案:

没有答案