​ 在使用R Markdown时插入本地图片十分方便,只需输入格式为![图片说明](图/片/路/径),注意图片路径中为正斜杠而不是反斜杠,包含文件名本身。如果图片所在位置就在项目所在文件夹,在文件名前加点与斜杠,如![图片说明示例](./fig.png)

​ 如果想控制图片的显示尺寸,可以用下面的方式:

1
2
3
```{r echo=FALSE, fig.cap="插入本地图片", out.width = '30%'}
knitr::include_graphics("./fig.png")
```

​ 显示为:

image-20220305161100182

在上面的方法中,将路径名改为网址,还可以插入来自网络的图片(以及本地或网络的gif动图),如

1
2
3
```{r echo=FALSE, fig.cap="来自网络的图片", out.width = '30%'}
knitr::include_graphics("https://d33wubrfki0l68.cloudfront.net/aee91187a9c6811a802ddc524c3271302893a149/a7003/images/bandthree2.png")
```

​ 显示为:

image-20220305161113958

​ 但插入来自网络的图片会在导出为PDF时出错,无法正常导出,此时需要采用URL包进行辅佐导出

1
2
3
4
5
6
7
8
9
10
11
```{r, echo=FALSE, message=F, warning=F, fig.align="center"}
# Define variable containing url
url <- "http://www.online-image-editor.com//styles/2014/images/example_image.png"
library(png)
library(RCurl)
url_cont <- getURLContent(url)
img <- readPNG(url_cont)
rimg <- as.raster(img) # raster multilayer object
r <- nrow(rimg) / ncol(rimg) # image ratio
plot(rimg)
```

​ 此时就能正常导出PDF文件,但可能会造成编译时间较长等问题。

参考

  • https://community.rstudio.com/t/not-able-to-get-an-image-into-word-pdf-from-url-in-rmarkdown/15855/11
  • https://d.cosx.org/d/422426-rmarkdownpdf
  • https://bookdown.org/xiao/RAnalysisBook/r-markdown.html