在 R markdown 输出中将图形标题分配给 html 小部件(vtree 包)

Assign figure caption to html widget (vtree package) in R markdown output

我需要在 R markdown 中的 vtree 包生成的图中实现图形标题。我了解到这是一个 htmlwidget 并且图形标题现在应该可以用于 R markdown 中使用 install.packages('webshot') 和 webshot::install_phantomjs() 的 htmlwidgets(参考:https://bookdown.org/yihui/bookdown/html-widgets.html#ref-R-DT。 但是几天后我并没有真正更进一步。我没有找到这个问题的任何例子(展示案例)(fig.cap for htmlwidgets in R markdown in the net)所以我希望有人能给我一些帮助! 在我的鸢尾花数据集示例中,在图 1 中,与图 2 相比,标题不起作用。

我的虹膜设置示例 RMD 文件:

YAML

---
title: "test"
author: "TJ"
date: "14 12 2020"
output: html_document
---

代码块 1:加载库和数据

knitr::opts_chunk$set(echo = TRUE)
library(vtree)
library(webshot)
library(tidyverse)
attach(iris)
df <- iris %>%
  select(Species) %>% 
  cbind(sapply(levels(.$Species), `==`, .$Species))

代码块 2:图 1

{r fig1, echo=FALSE, fig.cap="Vtree plot"}
vtree(iris, "Species")

代码块 3:图 2

{r fig2, echo=FALSE, fig.cap="Scatter plot iris dataset"}
plot(Sepal.Length, Sepal.Width, main="Scatterplot Example",
     xlab="Sepal Length ", ylab="Sepal Width ", pch=19) 

有一个解决方法是使用 Magick package.You 使用 grVizToPNG 将图像保存为 .png(确保在渲染文档之前注释掉这一行,或者将其放在一个单独的块中´{r eval = FALSE},否则渲染时会报错:

```{r eval=FALSE, echo = FALSE}

myimage <- vtree(iris, "Species")
saveMyimage <- grVizToPNG(myimage, width=800)
```

这里使用Magick包:

```{r magick, echo= FALSE}

MyimagePNG <- image_read("myimage.png")
image_annotate(MyimagePNG, "Vtree plot", size = 35, gravity = "southwest")

```