1

我正在尝试使用gridExtra. 这是从这个文档页面稍微修改的 MWE 。 gtable正在做幕后工作,但文档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)

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

样本

第二次调用gtable::gtable_add_grob给出了一个错误,很明显我的简单概念是r = 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]))
4

1 回答 1

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)

在此处输入图像描述

于 2015-07-19T22:50:25.140 回答