编辑grid.table功能

时间:2014-01-07 17:40:49

标签: r

我想绘制一个简单的网格。在这里和那里,我发现人们使用grid.table

我设法以最简单的方式显示我的数据,如下所示:

library("gridExtra")
cmSmall = 5
cmMed = 7
cmBig = 15

df = matrix(ncol=4,nrow=2)
df[1,] = c('Size',"small","medium","large")
df[2,] = c('cm',cmSmall, cmMed, cmBig)
df = as.data.frame(df)


grid.table(df, show.rownames=FALSE, show.colnames=FALSE)

This is how it looks:

现在,我想要以下内容:

  1. 将'尺寸'和'cm'放在粗体

  2. 为此表添加一个标题(有两行)(我应该以某种方式将其添加到一个情节中吗?!)

  3. 知道该怎么做吗?

    非常感谢!

2 个答案:

答案 0 :(得分:4)

你可以通过将该列移动到行名称,显示它并修改rownames的样式来以hacky方式执行1:

grid.table(`rownames<-`(df[-1],df[[1]]), gpar.rowtext = gpar(fontface = "bold"),
 gpar.rowfill = gpar(fill = "grey95", col = "white"), show.colnames=FALSE)

答案 1 :(得分:1)

这是一个扩展的评论,而不是一个解决方案,但现在可以解释为什么这个问题的 1 部分目前很难 ---

1至少实际上是非常困难的,并且正如机会所允许的那样,Paul Murrell在最新一期R JournalPDF)中讨论过。

问题归结为:

R> grid.table(df, show.rownames=FALSE, show.colnames=FALSE)
R> grid.ls()
GRID.table.1

此时,grid.table()创建了一个table grob,只有在绘制时间形成实际表的grob才能完成。这是通过适当的drawDetails()方法实现的。但是在实际绘制表格之前,无法编辑用于绘制表格的各个凹凸;它们还不存在。

R版本&gt; = 3.0.0引入了一些新功能和一种新的工作方式,可以提供您想要的功能,但需要更改grid.table()以使用网格中的新功能包。实际上,这可以归结为为makeContent() grob编写table方法,然后可以使用grid.force()强制使用需要绘制表的各个grobs来填充它。此时,您可以使用grid.edit()使“尺寸”和“cm”变为粗体。