r - 向grid.table图添加文本

标签 r

我最近开始使用grid.table包中的gridExtra函数将表格数据转换为png图像文件,以便在网络上使用。到目前为止,我一直很高兴,因为它默认情况下会产生非常漂亮的输出,有点像表的ggplot2。像asked这个问题的人一样,我希望看到能够为单个列指定理由的功能,但这将锦上添花。

我的问题是是否可以在grid.table周围添加文本,以便为绘图表提供标题和脚注。在我看来这应该是可行的,但是我对网格图形的了解还不足以解决如何将grobs添加到表grob中。例如,此代码:

require(gridExtra)

mydf <- data.frame(Item = c('Item 1','Item 2','Item 3'), 
                    Value = c(10,15,20), check.names = FALSE)
grid.table(mydf,
           gpar.coretext=gpar(fontsize = 16),
           gpar.coltext = gpar(fontsize = 16),
           gpar.rowtext = gpar(fontsize = 16),
           gpar.corefill = gpar(fill = "blue", alpha = 0.5, col = NA),
           h.even.alpha = 0.5,
           equal.width = FALSE,
           show.rownames = FALSE,
           show.vlines = TRUE,
           padding.h = unit(15, "mm"),
           padding.v = unit(8, "mm")
           )

生成此图:

当我真的希望能够在代码中执行以下操作而不是通过其他应用程序编辑图像时:

最佳答案

要将文本放在表格附近,您需要先评估表格大小,

library(gridExtra)
d <- head(iris)
table <- tableGrob(d)

grid.newpage()
h <- grobHeight(table)
w <- grobWidth(table)
title <- textGrob("Title", y=unit(0.5,"npc") + 0.5*h, 
                  vjust=0, gp=gpar(fontsize=20))
footnote <- textGrob("footnote", 
                     x=unit(0.5,"npc") - 0.5*w,
                     y=unit(0.5,"npc") - 0.5*h, 
                  vjust=1, hjust=0,gp=gpar( fontface="italic"))
gt <- gTree(children=gList(table, title, footnote))
grid.draw(gt)

编辑(17/07/2015)使用gridExtra> = 2.0.0时,此方法不再适用。 tableGrob现在返回一个gtable,可以更容易地对其进行自定义。
library(gridExtra)
d <- head(iris)
table <- tableGrob(d)

library(grid)
library(gtable)

title <- textGrob("Title",gp=gpar(fontsize=50))
footnote <- textGrob("footnote", x=0, hjust=0,
                     gp=gpar( fontface="italic"))

padding <- unit(0.5,"line")
table <- gtable_add_rows(table, 
                         heights = grobHeight(title) + padding,
                         pos = 0)
table <- gtable_add_rows(table, 
                         heights = grobHeight(footnote)+ padding)
table <- gtable_add_grob(table, list(title, footnote),
                         t=c(1, nrow(table)), l=c(1,2), 
                         r=ncol(table))
grid.newpage()
grid.draw(table)

关于r - 向grid.table图添加文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11774703/

相关文章:

r - 基于成功率填充的 stat_bin2d

javascript - 将行号添加到呈现的 rmarkdown html 文档的文本内容

r - dplyr,R : Counting a specific value in multiple columns at once

r - 如何通过 r markdown html 在 html 文档中设置语言

r - 更改 qplot (R) 中的图例大小

r - 在 R 中访问控制图结果?

r - 对于 R 中的随机森林模型,predict() 函数和 model$predicted 有什么区别?

r - 日期转换 : Converting dates that contain day of the week to a normal date format

r - 将 R 与 OrientDB 连接起来

r - 如何从 R/shiny 中的传单 map 获取缩放级别?