【问题标题】:Image footnotes in BookdownBookdown 中的图片脚注
【发布时间】:2018-02-05 17:50:12
【问题描述】:

如何在bookdown::pdf_document2 的图片正下方添加图形注释?对于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.

谢谢

【问题讨论】:

    标签: r knitr r-markdown bookdown


    【解决方案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))
    ```
    

    查看这篇文章的原始描述:Subfigures or Subcaptions with knitr?

    【讨论】:

      【解决方案2】:

      找到了一个权宜之计:

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

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

      【讨论】:

        猜你喜欢
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-15
        • 2021-12-03
        相关资源
        最近更新 更多