我正在努力在一页中绘制两个或多个图。其中一个图必须是热图图(在食谱 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"))”,它也会更改第二个绘图。
此外,我还想添加与其他图对齐的第三个图并控制其高度。
提前致谢。