如果我设置 echo=FALSE,R Markdown 会使自定义绘图消失

2024-04-29

我创建了一个自定义函数,它将 mfrow 设置为 nxn 并根据数据框的输入列表创建 n^2 个散点图,每个图上有多个数据集。我的绘图函数的签名如下所示:

plot.return.list<-function(df.list,num.plot,title)

Where df.list是我的数据框列表,num.plot是要生成的绘图总数(用于设置mfrow) and title是总体图标题(该函数为每个单独的子图生成标题)。

当我从控制台运行该函数时,这会很好地创建绘图。但是,我正在尝试使用 RStudio 将此图放入 Markdown 文档中,如下所示:

```{r, fig.height=6,fig.width=6} 
plot.return.list(f.1.list,4,bquote(atop("Numerical Approximations vs Exact Soltuions for "
,dot(x)==-1*x*(t))))
```

由于我还没有设置echo我的选项{r}语句,这会打印绘图代码以及绘图本身。但是,如果我的第一行改为:

{r, fig.height=6,fig.width=6,echo=FALSE} 

然后代码和情节都会从最终文档中消失。

如何在没有代码的情况下显示绘图?根据RStudio给出的例子,设置echo=FALSE应该使情节在没有代码的情况下出现,但这不是我观察到的行为。

EDIT:我似乎已经将我的问题归结为kable。无论我是否正在制作自定义绘图帮助函数,任何对kable杀死了我的阴谋。这可以在降价中重现:

---
title: "repro"
author: "Frank Moore-Clingenpeel"
date: "October 9, 2016"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(knitr)
options(default=TRUE)
repro.df<-data.frame((0.1*1:10)%*%t(1:10)) 
```
```{r, echo=FALSE}
kable(repro.df)
```
```{r, fig.height=6,fig.width=6,echo=FALSE} 
plot(repro.df[,1],repro.df[,2])
```

在这段代码中,绘图不会绘制,因为我有echo设置为假;删除标志使绘图可见

另请注意,在我的重现代码中,kable生成一个表,最后一行有一堆垃圾——我不知道为什么,但这对于我的完整原始代码来说不是这样,而且我认为这与我的问题无关。


感谢您提供可重现的示例。从这里我可以看到问题是你的表块和绘图块之间没有换行符。

如果您要编织它并检查 knit 生成的 MD 文件(或设置html_document作为你的输出格式并且有keep_md: true查看它),您会看到表格代码和绘图代码没有用任何换行符分隔。 Pandoc 需要它来界定表的末尾。没有它,它会认为你的![](path/to/image.png)是表格的一部分,因此将其作为表格中的“垃圾线”而不是单独的图像。

只需在两个块之间添加一个换行符就可以了。 (表格需要用空行包围)。

(我知道你正在编译为 LaTeX,所以它可能会让你感到困惑为什么我在谈论 markdown。如果确实如此,当你执行 Rmd -> PDF 时,Rmarkdown 使用knit从 RMD 转到 MD,然后pandoc从 MD 到 TEX。这就是为什么你仍然需要确保你的降价看起来没问题)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果我设置 echo=FALSE,R Markdown 会使自定义绘图消失 的相关文章

随机推荐