gpt4 book ai didi

RMarkdown : Multiple ggplots in same chunk using loop

转载 作者:行者123 更新时间:2023-12-05 02:08:23 24 4
gpt4 key购买 nike

我正在尝试在 RMarkdown 文档的单个 block 中使用 for 循环生成多个图(在 ggplot2 中)。

当我对代码进行硬编码以生成这两个图时,图按预期呈现。请参阅我的代码中标题为“硬编码方法”的部分。

但是,当我为列表中的两个图加载参数并循环遍历列表时,图没有显示出来。我也没有看到任何错误。请参阅我的代码中标题为“循环方法”的部分。

谁能告诉我这是怎么回事,我该如何解决?谢谢。

  • 卡尔提克。

这是我的代码:

---
title: "Test for multiple plots"
author: "KC"
date: "4/3/2020"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

# Hardcoded Method

Sample Plot - One plot at a time

```{r Multiple Plots separately listed, echo=TRUE, fig.keep="all"}
library(ggplot2)
library(datasets)

combo = c("temperature", "pressure")
ggplot(pressure,
mapping=aes(x=base::get(combo[1]), y=base::get(combo[2]))) +
geom_point() +
labs(x=combo[1],
y=combo[2],
title=paste("Hardcoded Method:", paste(combo, collapse=" vs ")))

combo = c("pressure", "temperature")
ggplot(pressure,
mapping=aes(x=base::get(combo[1]), y=base::get(combo[2]))) +
geom_point() +
labs(x=combo[1],
y=combo[2],
title=paste("Hardcoded Method:", paste(combo, collapse=" vs ")))

```

# Loop Method

Now, I use a loop method to generate the same plots.

```{r Multiple Plots in a loop, echo=TRUE, fig.keep="all"}
library(ggplot2)
library(datasets)
combos = list(c("temperature", "pressure"), c("pressure", "temperature"))

for (combo in combos) {
# combo = combos[[1]]
print(paste("Plotting", paste(combo, collapse=" vs ")))
ggplot(pressure,
mapping=aes(x=base::get(combo[1]), y=base::get(combo[2]))) +
geom_point() +
labs(x=combo[1],
y=combo[2],
title=paste("Loop Method:", paste(combo, collapse=" vs ")))
}

```

最佳答案

在包含 Markdown 文件的代码块中使用 for 循环时,您需要显式地 print() 绘图。因此,以下代码将不起作用:

for (i in length(x)) {
ggplot(...)
}

你需要转换成这样的东西:

for (i in length(x)) {
p <- ggplot(...)
print(p)
}

关于RMarkdown : Multiple ggplots in same chunk using loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61015513/

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