37

我正在编写一个 Rmd 文件,由 knitr 处理成 HTML。它包含一些生成图形的 R 块,这些图形存储为 HTML 中的数据 URI。

1)如何为这样的图像添加标题?我想要一个标题,上面写着“图 3:等等等等”,其中“3”是自动生成的。

2) 我以后如何引用此图像,即“如图 3 所示,等等等等”。

4

7 回答 7

25

我迟到了,但我想提一下我最近构建的一个小程序包,用于使用knitr. 它被调用kfigr,您可以使用devtools::install_github('mkoohafkan/kfigr'). 它仍在积极开发中,但主要功能已经存在。请务必查看小插图,它显示了一些使用示例并定义了一些用于图形标题和锚点的钩子(我以后可能会选择导入包knitr并在加载时定义这些钩子)。

编辑:kfigr 现在可以在 CRAN 上使用!

于 2014-06-02T06:43:26.923 回答
16
  1. 您可以使用 R 中的简单计数器创建图形编号;在这里看一个例子。问题是 Markdown 渲染器是否会为您渲染图形标题:R Markdown v1 不会,但v2(基于 Pandoc)会。
  2. 我不知道。没有直接的方法可以插入标签作为图形的标识符,因此可能无法使用纯 Markdown 交叉引用图形。一旦你遇到这样的问题,想想(1)我真的需要它吗?(2)如果打算做一个结构复杂的文档,我觉得还是直接用LaTeX比较好(Rnw文档)。
于 2012-12-12T23:23:07.293 回答
11

也很晚了,我在这里改变了易辉的建议,他也在上面链接做参考。

```{r functions, include=FALSE}
# A function for captioning and referencing images
fig <- local({
    i <- 0
    ref <- list()
    list(
        cap=function(refName, text) {
            i <<- i + 1
            ref[[refName]] <<- i
            paste("Figure ", i, ": ", text, sep="")
        },
        ref=function(refName) {
            ref[[refName]]
        })
})
```
```{r cars, echo=FALSE, fig.cap=fig$cap("cars", "Here you see some interesting stuff about cars and such.")}
plot(cars)
```

What you always wanted to know about cars is shown in figure `r fig$ref("cars")`
于 2015-03-06T09:17:58.847 回答
5

此处描述了执行这两种方法的一种方法:http ://rmflight.github.io/posts/2012/10/papersinRmd.html

此处描述了另一个(但我不知道它是否符合您的#2)。http://gforge.se/2014/01/fast-track-publishing-using-knitr-part-iii/

于 2014-01-09T01:41:21.297 回答
3

另一种解决方案:

https://github.com/adletaw/captioner

从自述文件:

captioner() returns a captioner function for each set of figures, tables, etc. that you want to create. See the help files for more details.

For example:

> fig_nums <- captioner()

> fig_nums("my_pretty_figure", "my pretty figure's caption")

"Figure 1: my pretty figure's caption"

> fig_nums("my_pretty_figure", cite = TRUE)
于 2015-06-09T23:21:12.713 回答
1

我用 bookdown 做了两个(数字+参考)。我在文件头的输出部分中添加了:

output:
  bookdown::html_document2:
    fig_caption : TRUE

然后我在 R 代码块中创建了一个图形,如下所示:

{r, my-fig-label,echo=F, eval=T, fig.align = 'center', fig.cap="This is my caption"}
knitr::include_graphics(here::here("images", "my_image.png"))

这会在您的数字下方生成一个自动编号。你可以参考它\@ref(fig:my-fig-label)

于 2021-08-10T16:27:15.067 回答
0

使用官方bookdown文档4.10 Numbered figure captions :

---
output: bookdown::html_document2
---

```{r cars, fig.cap = "An amazing plot"}
plot(cars)
```

```{r mtcars, fig.cap = "Another amazing plot"}
plot(mpg ~ hp, mtcars)
```
于 2021-12-13T23:53:26.290 回答