如何在R Rmd中将迷你图转换为pdf?

问题描述

在我的Rmd到pdf中,我想在表格中显示迷你图。有关适用于Rmd到html的示例,请查看https://stackoverflow.com/a/54578219/6170807。 kableExtra中的内置直方图和箱形图在Rmd到pdf中可以正常工作,但是我想要一个线形图,而不是直方图或箱形图。有人建议吗?谢谢!

解决方法

这是一个基本示例。我们只需为每行/每组创建一个图并保存。在表中,我们将乳胶代码添加到相应的绘图中。由您决定如何设置图的样式和格式。您可以检查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,rep(2002,rep(2003,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,"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)
```

enter image description here