【问题标题】:Combine multiple gt tables to single one plot将多个 gt 表合并为一个图
【发布时间】:2022-01-06 07:51:37
【问题描述】:

使用下面的代码(根据here 的代码进行编辑),我生成了两个带有gt 包的示例表:

library(tidyverse)
library(patchwork)
library(gt)

p1 <- mtcars %>% 
  head(5) %>% 
  gt()

p2 <- mtcars %>% 
  tail(5) %>% 
  gt()

# using wrap elements because this seems to be the answer to non-ggplot grobs e.g. #164 
wrap_elements(full = p1 | p2)
grid.arrange(p1, p2, ncol=2, top="Main Title")

输出:

Error in p1 | p2 : 
  operations are possible only for numeric, logical or complex types

对于 ggplot 对象,我希望将它们合并为一个:p &lt;- (p1 | p2) 使用 patchwork 包,但我还没有找到有效的答案。

我也尝试使用as_ggplot()函数将其转换为ggplot:

library(bstfun)

mtcars %>%
  head(5) %>%
  gt() %>% 
  as_ggplot()

但它会引发错误:

Error: '.assert_package' is not an exported object from 'namespace:broom.helpers'

有可能吗?提前感谢您的帮助。

参考:

R - combine two gt objects in a single page output

【问题讨论】:

  • 如果您不限于gt,这些可能会有所帮助stackoverflow.com/questions/60349028/…
  • 谢谢,但我需要使用gt,因为大部分情节都是用它完成的。 :(
  • 另一种可能的选择是过滤两部分数据(head和mtcars的tail),分别绘制两部分,但两部分水平排列形成一个图形,但我不确定gt 是否可以做到这一点。
  • 感谢分享,这似乎给了我解决问题的希望,我试试@stefan

标签: r cowplot gt patchwork gtextras


【解决方案1】:

我可以为您提供这个解决方案:

1.我们获取您的数据:

   p1 <- mtcars %>% 
      head(5) %>% 
      gt()

   p2 <- mtcars %>% 
      tail(5) %>% 
      gt()

2。让我们将您的表格保存到 .png 中:

    p1 %>%
       gtsave("p11.png", path = "Your_working_dir")
    p2 %>%
       gtsave("p12.png", path = "Your_working_dir")

3.让我们合并您的表格:

    library(cowplot)
    p111 <- ggdraw() + draw_image("p11.png", scale = 0.8)
    p112 <- ggdraw() + draw_image("p12.png", scale = 0.8)
    plot_grid(p111, p112)

我们的结果:

【讨论】:

  • 这个方法很有意思,谢谢分享。
  • @ah bon 新年好运;)
  • 您可以使用magick 中的image_composite 函数采取类似的方法。
猜你喜欢
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 2019-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多