如何在R中使用grid.arrange绘制并排图形的边框/框线

3
我使用ggplot创建了两个图表,如下所示:

我使用ggplot创建了两个图表,如下所示:

library(ggplot2)
library(gridExtra)
g1 <- ggplot(iris, aes(Sepal.Width, Sepal.Length)) + geom_point()
g2 <- ggplot(iris, aes(Petal.Width, Petal.Length)) + geom_point()
grid.arrange(g1, g2, ncol=2)

我想在grid.arrange生成的并排两个图之间绘制一个边框/框。 我认为这与使用grid.border有关,但不确定具体操作方法。 将感激任何帮助?


欢迎来到SO!您可能被downvote了,因为通常最好发布一个带有完整可重现示例和可以通过复制粘贴运行的完整代码的问题。 - tonytonov
抱歉,这是我第一次发布。感谢您的编辑。 - Ramesh Maganti
1个回答

2

以下是从ggplot帮助页面中选取的一个示例:

 gg <- df <- data.frame(gp = factor(rep(letters[1:3], each = 10)),
                  y = rnorm(30))

 library(plyr)
 ds <- ddply(df, .(gp), summarise, mean = mean(y), sd = sd(y))
 gg2 <-ggplot(df, aes(x = gp, y = y)) +
    geom_point() +
    geom_point(data = ds, aes(y = mean),
               colour = 'red', size = 3)+theme(panel.border=element_rect(fill=NA) )
 grid.arrange(gg2,gg2, ncol=2)

也许这取决于你的意思:

或者是这个:

 gg2 <-ggplot(df, aes(x = gp, y = y)) +
    geom_point() +
    geom_point(data = ds, aes(y = mean),
               colour = 'red', size = 3)+theme(plot.background = element_rect(size=3,linetype="solid",color="black"))
 grid.arrange(gg2,gg2, ncol=2)

如果你只是想要一个边框矩形:
grid.rect(.5,.5,width=unit(.99,"npc"), height=unit(0.99,"npc"), 
          gp=gpar(lwd=3, fill=NA, col="blue"))

2
上面的解决方案没有在两个不相关的图形周围绘制边框/框?我正在寻找一个框/边框,它可以包含由grid.arrange生成的所有图形。谢谢。 - Ramesh Maganti
您可能需要明确设置 fill=NA,因为某些设备的默认值可能为“白色”,从而覆盖了下面的绘图。 - baptiste
好的观点。虽然不是在3.1.0上,但这在早期版本的R上运行时我也想到过。 - IRTFM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接