如何将表添加到ggplot?
问题描述:
我正在尝试将常规ggplot
图表与通过flextable
获得的表合并(在单个图表中).
I am trying to combine (in a single chart) a regular ggplot
chart with a table obtained with flextable
.
请考虑以下示例:
library(tidyverse)
library(patchwork)
mydf <- tibble(a = c(1,2,3,4,5,4),
b = c(4,4,4,3,3,3))
p1 <- mydf %>% ggplot(aes(x = a, y = b, color = as.factor(b))) + geom_point()
p2 <- mydf %>% flextable::flextable()
p2
看起来像
但是很遗憾,我无法将其与p1
but unfortunately I cannot combine it with p1
> p1 + p2
Error: Don't know how to add p2 to a plot
我们该怎么办? 谢谢!
What can we do? Thanks!
答
您可以使用功能flextable::as_raster
从弹性表获取栅格,然后使用annotation_custom
添加到空的ggplot对象.
You can use fonction flextable::as_raster
to get a raster from a flextable and then add with annotation_custom
to an empty ggplot object.
library(ggplot2)
library(flextable)
library(grid)
library(cowplot)
library(tidyverse)
mydf <- tibble(a = c(1,2,3,4,5,4),
b = c(4,4,4,3,3,3))
p1 <- mydf %>% ggplot(aes(x = a, y = b, color = as.factor(b))) + geom_point()
ft_raster <- mydf %>% flextable::flextable() %>%
as_raster()
p2 <- ggplot() +
theme_void() +
annotation_custom(rasterGrob(ft_raster), xmin=-Inf, xmax=Inf, ymin=-Inf, ymax=Inf)
cowplot::plot_grid(p1, p2, nrow = 2, ncol = 1, rel_heights = c(4, 1) )
文档在这里: https://davidgohel.github.io/flextable/article/offcran/images.html