我想绘制一个简单的网格。在这里和那里,我发现人们使用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)
现在,我想要以下内容:
将'尺寸'和'cm'放在粗体
为此表添加一个标题(有两行)(我应该以某种方式将其添加到一个情节中吗?!)
知道该怎么做吗?
非常感谢!
答案 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 Journal(PDF)中讨论过。
问题归结为:
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”变为粗体。