如何将 R Rmd 中的迷你图制作为 pdf?

How to make sparklines in R Rmd to pdf?

在我的 pdf Rmd 中,我想在 table 中添加迷你图。有关在 html 的 Rmd 中工作的示例,请查看 。 kableExtra 中的内置直方图和箱线图在 Rmd 到 pdf 中工作正常,但我想要一个折线图,而不是直方图或箱线图。有人建议吗?谢谢!

这是一个基本示例。我们只需为每个 row/group 创建一个图并保存。在 table 中,我们将乳胶代码添加到相应的图中。由您决定如何设置图表的样式和格式。您可以查看 kableExtra 的源代码以了解直方图和箱线图的实现方式。

另一种选择是使用 pagedown 呈现分页 HTML 报告并使用 pagedown::chrome_print 或通过浏览器手动打印它们。这样您就可以使用 HTML 迷你图方法。

---
output: pdf_document
---

```{r, include=F}
library(tidyverse)
library(ggplot2)
library(tidyr)
library(scales)

df <- data.frame(Country = rep(c("A", "B", "C"), 5), 
                 Year = c(rep(2000, 3), rep(2001, 3), rep(2002, 3), rep(2003, 3), rep(2004, 3)),
                 Value = sample(1000:2000, size = 15))



df %>%
  group_by(Country) %>%
  do({
    p <- ggplot(., aes(x = Year, y = Value)) + 
      geom_line(size = 5, color = ifelse(tail(.$Value, n = 1) < head(.$Value, n = 1), "firebrick3", "springgreen")) + 
      geom_line(size = 2.5, color = ifelse(tail(.$Value, n = 1) < head(.$Value, n = 1), "firebrick", "springgreen3")) + 
      theme_void()
    ggsave(p, filename = paste0("fig", unique(.$Country), ".pdf"), width = 4, height = 1.25)
    invisible(.)
  })


df <- df %>%
  pivot_wider(names_from = Year, values_from = Value) %>%
  mutate(Sparkline = paste0("\raisebox{-.5\height}{\includegraphics[width=2cm]{fig", Country, ".pdf}}"))
```

```{r, echo  = F}
knitr::kable(df, escape = F)
```