Bookdown中的图像脚注

时间:2018-02-05 17:50:13

标签: r knitr r-markdown bookdown

如何在ggplot2的图片下方添加图注?对grid.arrange创建的图表执行起来相对容易。 grid.arrange(<plot>, bottom = <figure_notes>)可以使用knitr::include_graphics(rep("images/knit-logo.png", 3))进行工作。但是,如果我手动插入图像,例如knitr,是否有办法为其添加图形注释?我看到fig.subcap选项,```{r fig.show="hold", fig.cap = "a", fig.subcap = "b"} knitr::include_graphics(rep("images/knit-logo.png", 3)) ``` 。但这无法编译:

This is pdfTeX, Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6350 64-bit)
entering extended mode
! Undefined control sequence.
<recently read> \subfloat 

Error: Failed to compile miniSample.tex. See miniSample.log for more info.

返回:

select * from json_to_record('{"a":1,"b":[1,2,3],"c":"bar"}') as x(a int, b text, d text)

由于

2 个答案:

答案 0 :(得分:1)

如果要使用子图,则必须在LaTeX中加载subfig包。这可以通过使用YAML中的header-includes参数来完成,如here所述。

这是一个最小的,可重现的例子,它创建一个本地图像“temp.jpg”,然后产生三个子图:

---
output: pdf_document
header-includes:
   - \usepackage{subfig}
---

```{r}
jpeg(filename = "temp.jpg")
plot(cars)
dev.off()
```

```{r fig.show="hold", fig.cap = "a", fig.subcap = c("Your Caption", "Another Caption", "Isn't this great"), fig.ncol = 3, out.width="33%"}
knitr::include_graphics(rep("temp.jpg", 3))
```

enter image description here

  

查看此信息,了解原始说明:Subfigures or Subcaptions with knitr?

答案 1 :(得分:0)

找到了一个权宜之计:

  1. 使用magick::image_read将图像读入R中;
  2. 使用raster;
  3. 将图片转换为rasterGrob项目
  4. 使用textGrob创建一个注释;使用grid.arrange来呈现;
  5. 使用grid.arrange将照片与照片一起展示。

    plot_A <- magick::image_read(<path>) %>% rasterGrob(interpolate = TRUE) note <- textGrob("This is a note.") grid.arrange(plot_A, bottom = note)

相关问题