gtable:在表体中的所有细胞周围放一条黑线

时间:2015-07-19 21:50:38

标签: r gridextra r-grid gtable

我试图使用gridExtra在表格的主体周围放置一条相对较重的线(比如lwd = 2大小)。这里的MWE略微修改了本文档pagegtable正在开展工作,但gtable的文档很薄;看代码并没什么帮助。

g <- tableGrob(iris[1:4, 1:3], rows = NULL)
separators <- replicate(1, 
    segmentsGrob(x1 = unit(0,"npc")), 
    simplify=FALSE)
g <- gtable::gtable_add_grob(g, grobs = separators, 
    t = 1, b = nrow(g), l = 1)
g <- gtable::gtable_add_grob(g, grobs = separators, 
    t = 1, b = nrow(g), r = 3) # error: no default for l
grid.draw(g)

我试图获得这样的效果(不同的数据):

sample

gtable::gtable_add_grob的第二次调用给出了错误,所以很明显我的简单概念r = 3将该行放在第3列的右侧是天真的。关于如何在桌子周围加一条较重线的任何建议?如果我可以理解左边和右边的想法,我假设可以类似地绘制顶部和底部线。

附注:gridExtra最近修订为使用gtable。以前我用类似下面的命令制作了上面的图形;如果可能的话,我希望能够非常接近相同的设置(新方法的行以灰色级别交替,更好;我真的在旧的show.box功能之后)

myt <- gridExtra::tableGrob(aov1, show.box = TRUE,
                show.rownames = TRUE, show.colnames = TRUE,
                show.csep = TRUE, show.rsep = TRUE,
                separator = "black", gp = grid::gpar(cex = table[3]))

1 个答案:

答案 0 :(得分:2)

你可以添加一个rectGrob,覆盖你想要关在笼子里的所有细胞,

library(gridExtra)
library(gtable)
library(grid)
g <- tableGrob(iris[1:4, 1:3])
g <- gtable::gtable_add_grob(g, 
                             grobs = rectGrob(gp=gpar(fill=NA, 
                                                      lwd=2)), 
                             t = 2, b = nrow(g), l = 2, r = ncol(g))
grid.newpage()
grid.draw(g)

enter image description here