问题描述
在我的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)
```