使用knitr :: include_graphics的图形尺寸的块选项被忽略

时间:2020-09-16 18:13:06

标签: r knitr

给出以下rmarkdown文件:

```{r}
library(knitr)
```

```{r, out.width="100%"}
path <- "plotx.png"
knitr::include_graphics(path)
```

```{r, out.width="100%", out.height="150%"}
knitr::include_graphics(path)
```

图形之间的大小没有区别,好像图形大小选项没有任何作用。使用其他类似选项,例如fig.widthfig.height没有任何区别。

> sessionInfo()
R version 4.0.2 (2020-06-22)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux bullseye/sid

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/atlas/libblas.so.3.10.3
LAPACK: /usr/lib/x86_64-linux-gnu/atlas/liblapack.so.3.10.3

locale:
 [1] LC_CTYPE=en_CA.UTF-8       LC_NUMERIC=C               LC_TIME=en_CA.UTF-8        LC_COLLATE=en_CA.UTF-8     LC_MONETARY=en_CA.UTF-8    LC_MESSAGES=en_CA.UTF-8   
 [7] LC_PAPER=en_CA.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] knitr_1.29          slmisc_1.2.1        latticeExtra_0.6-29 lattice_0.20-41    

loaded via a namespace (and not attached):
 [1] png_0.1-7          mime_0.9           grid_4.0.2         magrittr_1.5       evaluate_0.14      highr_0.8          stringi_1.4.6      RColorBrewer_1.1-2 tools_4.0.2       
[10] stringr_1.4.0      markdown_1.1       jpeg_0.1-8.1       xfun_0.16          yaml_2.2.1         compiler_4.0.2    

1 个答案:

答案 0 :(得分:1)

对于HTML输出,设置out.width="100%"会将图像缩放到其父容器宽度的100% ,而不是图像像素的100%。这样就可以保持纵横比,从而在不失真的情况下提供最大可能的结果。设置out.width="100%" out.height="150%"会产生相同的结果。使用像素获取准确的尺寸(这可能会导致失真)。

对于LaTeX输出,无论您使用像素还是%,纵横比都将保持不变(唯一的区别是像素被视为像素,并且%被转换为\textheight和{{1 }}。您可以使用块选项\linewidth来防止这种情况。

示例:

来自here的图片。

out.extra='keepaspectratio=false'

乳胶和HTML :宽度= 100px,宽高比保持不变

---
title: "Untitled"
output:
  html_document: default
  pdf_document: default
---

LaTeX:宽高比保持不变, HTML:宽度= 700px,高度= 200px宽高比保持不变

```{r, out.width = "100px"}
tiger <- "tiger.png"
knitr::include_graphics(tiger)
```

(左为LaTeX,右为HTML。图像缩放以并排放置。)