R中

R中

问题描述:

我已经创作了一系列使用ggplot地块,并在网格印刷它们添加边框曲线的网格。我想在整个网格中添加一个边框,以便在将图像插入到演示文稿中时,可以明确定义它。R中

这是网格的创建和打印命令我使用。我已经导入了所有必需的软件包。

library(grid) 
pushViewport(viewport(gp=gpar(col="white"), 
      layout = grid.layout(4, 2, heights = unit(c(0.5,5,5,5), "null")))) 
grid.text("Summer Clear Day- August 2, 2012", 
      vp = viewport(layout.pos.row = 1, layout.pos.col = 1:2)) 
grid.frame(gp=gpar(col="white"), draw=TRUE) 
print(tot, vp = viewport(layout.pos.row = 2, layout.pos.col = 1)) 
print(gh, vp = viewport(layout.pos.row = 2, layout.pos.col = 2)) 
print(dir, vp = viewport(layout.pos.row = 3, layout.pos.col = 1)) 
print(ir, vp = viewport(layout.pos.row = 3, layout.pos.col = 2)) 
print(dh, vp = viewport(layout.pos.row = 4, layout.pos.col = 1)) 
print(uv, vp = viewport(layout.pos.row = 4, layout.pos.col = 2)) 

grid.frame似乎没有做任何事情。我的背景是黑色的,所以我希望能在它周围创建一个白色的边框。

+1

请让你的例子可重复性。 – 2013-03-18 20:02:15

可以使用grid.rect例如。在绘制你的阴谋之前,我会把它放在一个单独的viewport之内。我的意思是:

  1. 我推第一视窗,我绘制矩形(框架)
  2. 我推视口Seconde系列,我创建了所有的地块。
  3. 我弹出我的2个视

enter image description here

pushViewport(plotViewport(c(5,5,5,5))) 
grid.rect() 
grid.rect(width=unit(1, "npc")-unit(0.5,'lines'), 
      height=unit(1, "npc")-unit(0.5,'lines')) 
pushViewport(plotViewport(c(1,1,1,1), 
         layout = grid.layout(4, 2, 
              heights =  unit(c(1,5,5,5), "null")))) 
grid.text("Summer Clear Day- August 2, 2012", 
      vp = viewport(layout.pos.row = 1, layout.pos.col = 1:2)) 
k1 <- ggplot(mtcars, aes(factor(cyl), mpg)) + geom_boxplot() 

print(k1, vp = viewport(layout.pos.row = 2, layout.pos.col = 1)) 
print(k1, vp = viewport(layout.pos.row = 2, layout.pos.col = 2)) 
print(k1, vp = viewport(layout.pos.row = 3, layout.pos.col = 1)) 
print(k1, vp = viewport(layout.pos.row = 3, layout.pos.col = 2)) 
print(k1, vp = viewport(layout.pos.row = 4, layout.pos.col = 1)) 
print(k1, vp = viewport(layout.pos.row = 4, layout.pos.col = 2)) 
upViewport(2) 
+0

感谢这正是我需要的! – user2183835 2013-03-18 20:44:51

@ agstudy的回答的压缩版本:

require(gridExtra) 
    grid.draw(grobTree(arrangeGrob(k1, k1, k1, k1, k1, k1, ncol=2, 
         main="Summer Clear Day- August 2, 2012"), 
        rectGrob(gp=gpar(lwd=2, fill=NA)))) 
+0

这不会产生相同的确切结果,但它是压缩代码的好方法。谢谢! – user2183835 2013-03-18 20:45:14

+0

您可以根据需要调整它,例如'main = textGrob(“Title”,gp = gpar(col =“red”))' – baptiste 2013-03-18 20:59:55