【问题标题】:How to embed plots into a tab in RMarkdown in a procedural fashion?如何以程序方式将绘图嵌入到 RMarkdown 的选项卡中?
【发布时间】:2017-04-26 13:48:49
【问题描述】:

我可以仅使用 RMarkdown 的 {.tabset} 嵌入绘图

#### Heading  {.tabset}
##### Subheading 1
```{r, echo=F}
df[[1]]    
```

这会在预览窗格中生成带有指定图形的单个选项卡(df 是图形列表,调用 df[[i]] 会生成图形)(在 RStudio 中内联呈现所有图形)。


我可以使用 for 循环只生成选项卡。

```{r, results='asis', echo = FALSE}
for (i in 1:length(gg0)) {
  cat("##### ",q$Subheading[i],"\n")
}
```

这会产生所需的输出 - 副标题列中带有名称的选项卡。


但是,我一直在尝试使用 for 循环自己生成图表,类似于我手动编码时所做的那样。

扩展上述内容,我尝试生成产生初始输出的降价,但绘图无法生成(在内联降价和预览中)。

```{r, results='asis', echo = FALSE}
for (i in 1:length(gg0)) {
  cat("##### ",q$Subheading[i],"\n")
    cat('```{r, echo=F} \n')
    cat("gg0[[",i,"]]\n")
    cat('``` \n')
}
```

也许我错过了关于降价的更好点?我使用cat(甚至没有)尝试了各种模式

我更喜欢 RMarkdown 解决方案,但也欢迎其他解决方案。

【问题讨论】:

  • 您能提供一个可重现的小虚拟示例吗?例如,您首先谈论df[[1]],然后在您的代码中使用gg0[[i]]
  • 我只是将原始变量 df 复制为 gg0 以防万一我覆盖它。但它们本质上是相同的数据。

标签: r ggplot2 r-markdown


【解决方案1】:

我玩了一会儿,找到了解决方案。您必须在 asis 代码块中使用 print...

```{r}
library(ggplot2)
gg0 <- list()
gg0[[1]] <- ggplot(mtcars, aes(mpg, hp)) + geom_point()
gg0[[2]] <- ggplot(mtcars, aes(mpg, disp)) + geom_point()
gg0[[3]] <- ggplot(mtcars, aes(mpg, drat)) + geom_point()

headings <- c('hp','disp','drat')
```

#### Heading  {.tabset}
```{r, results='asis', echo = FALSE}
for (i in 1:length(gg0)) {
  cat("##### ",headings[i],"\n")
  print(gg0[[i]])
  cat('\n\n')
}
```

作为解释,cat 命令与results='asis' 一起为较低级别的标题生成降价代码,然后打印 ggplot 图。由于我们在父标题中使用了 `{.tabset},它会在单独的选项卡中创建图表。

【讨论】:

  • 我现在可以绘制它们了!但它们都被打印在最后一个标签中。
  • 更新:此外,我尝试在代码块内生成另一个 R 代码块,但反引号一直被解析为代码格式化块。我正在寻找一种方法将图形锚定在副标题之后的那个位置。
  • 对我来说,我的示例适用于每个标签一个无花果。我猜 asisblock 中的块创建将不会被解析并且不会工作。
  • 非常有用。你能解释一下 cat("#####","Tab","\n") 的作用吗?图是如何与每个选项卡关联的?
  • @ashleych 添加了简短的解释。
【解决方案2】:

在 for 循环中同时添加 plot.new()、dev.off() 解决了在最后一个选项卡中添加所有图形的问题。查看完整解决方案here

【讨论】:

  • 该解决方案对我不起作用:我在第一个选项卡中得到了一个绘图,但在其他 5 个选项卡中没有
猜你喜欢
  • 1970-01-01
  • 2017-01-14
  • 2016-12-30
  • 2020-12-03
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
相关资源
最近更新 更多