1

我正在努力在一页中绘制两个或多个图。其中一个图必须是热图图(在食谱 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"))”,它也会更改第二个绘图。

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

提前致谢。

4

0 回答 0