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, 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)
```
推荐阅读
- sql - sql中的强制转换函数
- unix - 格式化 sql 查询的输出并创建 csv
- c - 不知道为什么电脑显示“variable-sized object may not be initialized”,有人能帮帮我吗?
- odoo - 如何在 many2many 字段上使用 write() 方法?
- mysql - 无法在 mySQL 中添加外键
- airflow - Airflow - 暂停/取消暂停并行运行的同一 DAG 的各个 dagrun
- django - 在 Django 表单中设置 Action 属性的正确方法是什么
- php - 使用 PHP 进行 Web 推送的 JWT 签名
- javascript - 我怎样才能使这个办公脚本更快?
- unity3d - 动画完成后旋转返回起点