我想在我的xtable
演示文稿中使用powerpoint
布局,我需要一种方法将data.frame
直接转换为xtable
的图片或图表,例如显示here。
理想的解决方案会给我一个ggplot
对象,因为我最灵活,但我可以使用另一个输出,只要我能在图片中看到xtable
(光栅或矢量)或绘图窗口。
答案 0 :(得分:0)
使用ggplot2
和grid.extra
,我们可以获得体面的表格:
library(ggplot2)
library(gridExtra)
ggplot() + annotation_custom(tableGrob(head(iris))) + theme_void()
tableGrob
有一个主题参数,允许足够的灵活性来重现xtable
附近的内容。见this vignette。
这是一个方便的功能,可以做多一点,你需要包grid
和gtable
:
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")