【问题标题】:plot xtable or save it as image绘制 xtable 或将其保存为图像
【发布时间】:2018-02-21 10:42:52
【问题描述】:

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

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

【问题讨论】:

  • 相关/可能重复? stackoverflow.com/q/9298765/680068
  • 非常感谢,请不要标记为重复,我将编译相关信息并在此处发布一个简单的解决方案。
  • 只是指向相关帖子,不关闭。如果您认为这是一个骗局,请关闭并在目标上发布您的答案。
  • 好的,你可以看看R2PPT包。使用 webshot 获取 xtable 的屏幕截图,然后使用 R2PPT 在您打开的 pptx 文件中添加内容。

标签: r plot ggplot2 xtable


【解决方案1】:

使用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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多