如何将 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)
```
在我的 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)
```