我有两个ggplot2图,我想在它们之间绘制一系列(10-100)略有不同的曲线。也就是说,我将使用两面板布局,并希望从左图到右图绘制连接线。到目前为止,我已经尝试通过将事物转换为grob并使用gtable包添加曲线来做到这一点。
为了说明这一点,我有类似以下内容:
library(ggplot2)
library(gtable)
library(grid)
library(gridExtra)
p1 = ggplot(data.frame(x=1:10,y=1:10),aes(x=x,y=y))+geom_point()
p2 = ggplot(data.frame(x=1:10,y=1:10),aes(x=x,y=y))+geom_point()
g1 = ggplotGrob(p1)
g2 = ggplotGrob(p2)
gt = gtable:::cbind.gtable(g1,g2,size='first')
gt$heights = unit.pmax(g1$heights,g2$heights)
for(i in 1:10) {
gt = gtable_add_grob(gt,curveGrob(0,0.5,1,0.5,ncp=5,square=FALSE,curvature=i/10),l=5,r=8,b=3,t=3)
}
grid.newpage()
grid.draw(gt)
产生这样的情节:
几乎是正确的,只显示了最后一个curveGrob对象。我尝试过为添加的grob尝试使用z-index,最后绘制的grob总是会覆盖其他grob。我希望我的图看起来一样,不同的是它应该显示两个图区域之间的所有10条曲线,而不是仅显示现有代码中显示的一条曲线。
那么,如何修改现有代码以显示所有10条曲线,或者通过使用不同的方法来实现相同的效果呢?我坚持使用ggplot2作为主要情节,因为它们比所示的玩具示例复杂得多。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句