首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gridExtra用tableGrob着色不同行

gridExtra用tableGrob着色不同行
EN

Stack Overflow用户
提问于 2013-08-24 01:23:07
回答 1查看 8.3K关注 0票数 9

关于gridExtra包中的tableGrob/grid.table,我有一个问题。使用常规参数设置,对交替行进行着色是非常简单的。然而,我希望对行的颜色进行更多的控制是可行的。

例如,是否可以将第三行涂上不同的颜色?我怀疑grid.edit函数是解决这个问题的一种方法,从这个链接中的例子来看:http://code.google.com/p/gridextra/wiki/tableGrob,但是我不知道如何将它应用到我的问题中。

我相信发表这个问题的人也有同样的想法。用tableGrob显示不同颜色行的表

由于兼容性问题,我目前被R2.13困住了,所以如果有任何建议不涉及更晚的版本,那将是理想的。

示例代码:

代码语言:javascript
复制
library(gridExtra)

grid.table(mtcars[1:10, ],
           gpar.coretext = gpar(fontsize = 10),
           gpar.corefill = gpar(fill = "lightblue", alpha=0.5, col = NA),
           h.even.alpha = 0.5
           )

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-24 18:58:56

从v>=2.0.0 of gridExtra开始,grid.table现在基于gtable,可以定制到比以前版本更深的层次。为了完整起见,这里有一个例子说明了如何突出显示特定的单元格,

代码语言:javascript
复制
g <- tableGrob(iris[1:4, 1:3])
find_cell <- function(table, row, col, name="core-fg"){
  l <- table$layout
  which(l$t==row & l$l==col & l$name==name)
}

ind <- find_cell(g, 3, 2, "core-fg")
ind2 <- find_cell(g, 2, 3, "core-bg")
g$grobs[ind][[1]][["gp"]] <- gpar(fontsize=15, fontface="bold")
g$grobs[ind2][[1]][["gp"]] <- gpar(fill="darkolivegreen1", col = "darkolivegreen4", lwd=5)
grid.draw(g)

编辑:上面的函数很容易“矢量化”。

代码语言:javascript
复制
find_cells <- function(table, row, col, name="core-fg"){
  l <- table$layout
  unlist(Map(function(r, c) which(((l$t-1) == r) & ((l$l-1) == c) & (l$name == name)), row, col))
}

modify_cells <- function(g, ids, gp=gpar()){
  for(id in ids) g$grobs[id][[1]][["gp"]] <- gp
  return(g)
}

ids <- find_cells(g, 1:3, c(3,2, 1), "core-fg")
g <- modify_cells(g, ids, gpar(fontsize=15, fontface="bold"))

grid.newpage()
grid.draw(g)

注意,在大多数情况下,在表构造期间指定参数更有意义,

代码语言:javascript
复制
faces <- sample(1:4, size = prod(dim(iris[1:4, 1:2])), replace = TRUE)
tt <- ttheme_default(core=list(fg_params=list(fontface=faces)))

grid.table(iris[1:4, 1:2], theme=tt)

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18414001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档