在RStudio中,我的图表看起来非常完美,但是当我通过“knit HTML”按钮生成HTML时,我的边缘被裁剪了。
我正在使用基本图形包创建一个简单的条形图。
我有一个大的下边缘来容纳沿x轴的垂直标签,以及一个宽的左边缘来保持y轴标题在一些大数字的左侧,例如:
```{r set-graph-options}
par(mar = c(12, 6, 4, 2) + 0.1, mgp = c(4, 1, 0), las = 2)
```
默认情况下,x轴和y轴的标签和标题都会受到影响。使用默认的
mgp
设置,我的ylab
设置看起来很好,但是如果使用更大的值,它似乎被推出了“画布”(或者在R中术语是什么)。我还注意到,knitr/rmarkdown不会识别全局设置的par()
选项。例如,在设置以上内容后,barplot(injury_top12, ylab = "Injuries")
将不会识别mar
、mgp
或las
选项,但是如果我将这些选项复制到barplot()
调用本身中,las = 2
和mgp = c(4, 1, 0)
开始工作,但mar
仍然无法识别。我尝试使用命令R -e "rmarkdown::render('Readme.Rmd')"
从命令行生成HTML,但存在相同的问题。我使用的是R Studio 0.98.1103,knitr为1.11,rmarkdown为0.8,操作系统为ubuntu linux。```{r echo = F, example-set-par}
library(knitr)
opts_knit$set(cache = FALSE, verbose = TRUE, global.par = TRUE)
par(mar = c(12, 6, 4, 2) + 0.1, mgp = c(4, 1, 0), las = 2)
d <- c("This is a longer than usual label" = 355,
"Another quite long label" = 144,
"A third longish label for a barplot" = 222)
```
Plot one depends on values set by `par()`:
```{r echo = F, example-plot-using-par}
barplot(d, ylab = "Arbitrary numbers")
```
Plot two explicitly sets options:
```{r echo = F, example-plot-with-explicit-options}
barplot(d, ylab = "Arbitrary numbers", mar = c(12, 6, 4, 2) + 0.1, mgp = c(4, 1, 0), las = 2)
```
当我编织这个Rmd文档时,第一个图表没有使用在
par()
中设置的las
或mgp
选项。第二个图表确实使用了这些选项,但是x轴标签被截断,并且y轴标题几乎完全被推出了框架之外(y的尾部略微可见)。
par
选项,你需要在文档内部进行设置。也许你可以给出一个可重现的例子? - Gregor Thomaspar()
。我添加了一个Example.Rmd和输出的截图。 - Kenneth D.opts_knit$set(global.par = TRUE)
并使用par()
设置了一些选项,对barplot()
的调用位于另外两个代码块中。 - Kenneth D.