以编程方式在 Markdown 中创建选项卡和绘图

jyj*_*jek 4 r knitr r-markdown purrr r-highcharter

我正在尝试在我的rmd内部创建动态数量的选项卡,其中包含一些内容。
这个没用。
像这样的东西:

---
title: "1"
output: html_document
---

```{r }
library(highcharter)
library(tidyverse)
iris %>% 
      dplyr::group_split(Species) %>% 
      purrr::map(.,~{
        # create tabset for each group 
        ..1 %>% 
          hchart("scatter", hcaes(x = Sepal.Length, y = Sepal.Width))
        })
```
Run Code Online (Sandbox Code Playgroud)

Wal*_*ldi 6

您可以设置results = 'asis'knitr 选项以使用cat.

获取Highcharter与工作asis很棘手:

  • Highchart 需要asischunck之前调用一次,可能是为了正确初始化,因此是第一个空图表。
  • 要在asischunck 中打印图表,HTML 输出以character格式发送到cat

尝试这个:

---
title: "Test tabs"
output: html_document
---

`r knitr::opts_chunk$set(echo = FALSE, warning = FALSE, message = FALSE, cache = F)`

```{r}
library(highcharter)
library(tidyverse)
# This empty chart is necessary to initialize Highcharter in the tabs
highchart(height = 1)
```


```{r, results = 'asis'}
cat('## Tabs panel {.tabset}   \n')
invisible(
  iris %>% 
      dplyr::group_split(Species) %>% 
      purrr::imap(.,~{
        # create tabset for each group 
        cat('### Tab',.y,'   \n')
        cat('\n')
        p <- hchart(.x,"scatter", hcaes(x = Sepal.Length, y = Sepal.Width))
        cat(as.character(htmltools::tagList(p)))
      })
)
```
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

请注意,虽然此解决方案运行良好,但它超出了最初用于asis