绘制xtable或将其保存为图像

时间:2018-02-21 10:42:53

标签: r plot ggplot2 xtable

我想在我的xtable演示文稿中使用powerpoint布局,我需要一种方法将data.frame直接转换为xtable的图片或图表,例如显示here

理想的解决方案会给我一个ggplot对象,因为我最灵活,但我可以使用另一个输出,只要我能在图片中看到xtable(光栅或矢量)或绘图窗口。

1 个答案:

答案 0 :(得分:0)

使用ggplot2grid.extra,我们可以获得体面的表格:

library(ggplot2)
library(gridExtra)
ggplot() + annotation_custom(tableGrob(head(iris))) + theme_void()

tableGrob有一个主题参数,允许足够的灵活性来重现xtable附近的内容。见this vignette

这是一个方便的功能,可以做多一点,你需要包gridgtable

table_plot <- function(x,
                       theme_fun= gridExtra::ttheme_minimal,
                       base_size = 12,
                       base_colour = "black",
                       base_family = "",
                       parse = FALSE,
                       padding = unit(c(4, 4), "mm"),
                       col = base_colour,
                       lwd=1,
                       lty=1
                       ){
  g <- gridExtra::tableGrob(x,
    theme = theme_fun(base_size, base_colour, base_family, parse, padding))
  separators <- replicate(ncol(g) - 2,
                          grid::segmentsGrob(x1 = unit(0, "npc"), gp=gpar(col=col,lwd=lwd,lty=lty)),
                          simplify=FALSE)
  g <- gtable::gtable_add_grob(g, grobs = separators,
                               t = 2, b = nrow(g), l = seq_len(ncol(g)-2)+2)
  ggplot2::ggplot() + ggplot2::annotation_custom(g) + ggplot2::theme_void()
}

简单的例子:

table_plot(head(iris))

复杂的例子:

iris2 <- setNames(head(iris)[1:3],c("alpha*integral(xdx,a,infinity)", "this text\nis high", 'alpha/beta'))
table_plot(iris2,
           base_size=10,
           base_colour="darkred",
           base_family = "serif",
           parse=TRUE,
           theme=ttheme_default,
           lwd=3,
           lty=2,
           col="darkblue")