knitr:设置“out.height”突然不保持纵横比

Rob*_*ing 5 graphics aspect-ratio knitr r-markdown ioslides

通过在 rmarkdown ioslides 演示文稿中使用knitr::include_graphicswith 选项out.height='50px',纵横比不会保留在我的机器上。有谁知道如何解决这个问题?

有趣的是,今天早上它起作用了。但不是在我安装了 R 包之后ggsn, ggmap, plotKML。后来我删除了它们,但问题仍然存在。

我使用:Ubuntu 16.04.4,R 版本 3.4.4,当前 rmarkdown

最小的例子是:

---
title: "Untitled"
author: "Me"
date: "May 24, 2018"
output: ioslides_presentation
---

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

## R Markdown
setting out.height does NOT keep aspect ratio
```{r, out.height='50px', dpi=200}
   knitr::include_graphics("rect_circ.png")
```

setting out.width keeps aspect ratio
```{r, out.width='50px', dpi=200}
knitr::include_graphics("rect_circ.png")
```
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样

Yih*_*Xie 3

我猜你偶然安装了png包(它可能是你提到的包的依赖项)。png可用时,include_graphics()将尝试设置块选项out.width以匹配您的dpi设置。在您的情况下,您设置了该out.height选项,这会导致宽高比扭曲的问题(自动计算的宽度为96,而您的手动高度为50)。

如果输出中有所需的图形大小,您可以调用

knitr::include_graphics("rect_circ.png", dpi = NA)
Run Code Online (Sandbox Code Playgroud)

以避免自动调整out.width。如果您有所需的 DPI,则应省略out.height,例如,

```{r}
knitr::include_graphics("rect_circ.png", dpi = 200)
``
Run Code Online (Sandbox Code Playgroud)