2014-09-02 42 views
3

我已經創建使用ggplot作爲兩個地塊使用grid.arrange地塊周圍並排排列如下:如何畫一個框/邊框中的R

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有關,但我不確定如何完全如此。會感謝任何幫助?

+0

歡迎去吧!你可能會被低估,因爲通常是一個好主意,用完整的[可重現的]發佈問題(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example )示例以及可以通過複製粘貼運行的完整代碼。 – tonytonov 2014-09-02 07:41:32

+0

道歉...第一次發帖。感謝編輯 – 2014-09-02 10:18:44

回答

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) 

或許這取決於你meeaning:

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生成的所有圖的框/邊框。謝謝 – 2014-09-02 10:28:32

+0

你可能想明確地設置'fill = NA',因爲它可能在某些設備上默認爲「白色」,因此覆蓋下面的圖。 – baptiste 2014-09-02 17:06:18

+0

好點。這確實發生在我運行早期版本R的機器上,儘管現在不在3.1.0上。 – 2014-09-02 17:14:10