我一直在尝试在r markdown中为包含ggplot2图表的考试包创建考试题目。
这是一个代表:
```{r}
library(ggplot2)
library(tibble)
x <- data_frame(x = rnorm(100, 50, 25), y = x + rnorm(100, 0, 15))
```
Question
========
```{r}
ggplot(x) + geom_point(aes(x = x, y = y))
```
What is true about the plot?
Answerlist
----------
* The relationship is strong
* The relationship is weak
Solution
========
The relationship is strong.
Answerlist
----------
* True
* False
Meta-information
================
exname: scatterplot
extype: schoice
exsolution: 10
exshuffle: 2
如果我编织文档,html页面会预览图表。
但是如果我使用exams2html()函数,则不会显示ggplot。
我尝试过不同的方法来打印图表(比如将图表存储在变量中,然后打印,或使用内联代码等),但没有真正起作用。我在r-exams.org网站或其他任何地方都找不到任何解决方案。 所以,我的问题是:我错过了什么,或者考试包中没有ggplot2支持吗?
答案 0 :(得分:3)
这与ggplot2
无关。这是knitr
中的一些默认值加上我的疏忽。
tl; dr:现在,在R-Forge(https://R-Forge.R-project.org/R/?group_id=1337)的exams
版开发中避免了这个问题。安装此版本后,该示例应该可以正常工作:install.packages("exams", repos="http://R-Forge.R-project.org")
详情:代码块
```{r}
ggplot(x) + geom_point(aes(x = x, y = y))
```
正确处理为grahics文件(正如您在问题中所示)。但是,生成的图形文件存储在子目录figure/
中,exams2xyz()
函数不会搜索该子目录以寻找潜在的补充。并且因为实际的HTML文件设置在与所有临时.Rmd和.md文件不同的目录中,所以找不到该图。
简单的解决方案是将当前目录用于所有补充而不是子目录。另外,我会关闭标题:
```{r, fig.path = "", fig.cap = ""}
ggplot(x) + geom_point(aes(x = x, y = y))
```
通过此修改,exams2html()
和exams2pdf()
都可以正常工作。请注意,编织文件(.md
和图形)是在临时文件夹中生成的,HTML是在另一个临时文件夹中生成的,因此不会使您的工作空间变得混乱。
如果您想要强制包含图形而不浮动且PDF输出中没有标题,则需要在代码块之前包含\
行。有关工作示例,请参阅R / exams模板库中的http://www.R-exams.org/templates/scatterplot/(使用基本图形,但非常相似)。
我的疏忽:我在fig.path=""
文件的考试包中通过knitr::opts_chunk$set()
设置了.Rnw
,但忘了为{{1}做同样的事情}文件。这已在devel版本中得到补救。因此,您可以在练习中使用.Rmd
,也可以在CRAN发行版中使用fig.path=""
。