gpt4 book ai didi

r - 如何在 R markdown 中制作多个不同高度的图?

转载 作者:行者123 更新时间:2023-12-05 06:19:19 28 4
gpt4 key购买 nike

我正在使用 Rmarkdown 自动生成一堆图。我有这样的代码:

```{r make_plots}
for (a_ggplot in a_bunch_of_ggplots()) {
print(a_ggplot)
}
```

我想让地 block 有不同的高度。通常我会在 block header 中使用 fig.height 设置高度。我尝试对 fig.height 使用矢量但没有成功。 (我认为它只是使用了最后一个值。)

如何使绘图具有不同的高度?

此外,我还想添加一些文档标题。我打算尝试来自 this answer 的技术(生成原始 Markdown 并使用 results='asis')。如果您的解决方案与之兼容,可加分!

编辑:也许我可以将绘图ggsave 为图像,然后使用include_graphics .看起来很老套。更糟糕的是,它会将它们栅格化,因此无法放大它们。但是,这是一个想法。

最佳答案

最好在此处使用 .pdf,因为该格式设计为在缩放时不会更改。您可以简单地使用 for 循环或可能更好的 Map 来首先创建您的绘图,然后使用 生成“原样”的 LaTeX 代码猫。我在这里使用的是基本图,我敢肯定,您也可以使用 ggplot2 来做到这一点。在 Map 周围,我们包裹了一个 invisible 以省略控制台输出。

---
title: "Untitled"
output: pdf_document
header-includes:
- \usepackage{lipsum} % just used for sample loremipsum text
---

\lipsum[1]

```{r plots, echo=FALSE, results="asis"}

what <- rep("AirPassengers", 4) ## mimicking multiple plots

invisible(Map(function(w) {
pdf(file=paste0(w, ".pdf"))
plot(get(w))
dev.off()
}, what))

heights <- c(2, 4, 6, 8) ## define heights for each plot

invisible(Map(function(w, h) cat(
"
\\begin{figure}[ht]
\\includegraphics[height=", paste0(h, "cm"), "]{", paste0(w, ".pdf"), "}
\\caption{", w, "}\\label{fig:", w, "}
\\end{figure}
", sep=""), what, heights))

```

\lipsum[1]

产生:

enter image description here

如果您真的只想要不同的高度,您可以在第一个 Map 调用中指定尺寸,例如使用第二个参数作为宽度,并在第二个参数中使用恒定的高度/宽度。

关于r - 如何在 R markdown 中制作多个不同高度的图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60856615/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com