【问题标题】:static image of targets workflow, programatically目标工作流的静态图像,以编程方式
【发布时间】:2022-08-05 05:14:32
【问题描述】:

我正在尝试在 rmarkdown 文档中嵌入 targets 工作流的静态图像。我试图通过使用tar_mermaid 来做到这一点,定义一个目标,以mermaid 格式编写工作流mm <- tar_mermaid(); writeLines(mm, \"target_mermaid.js\")tar_mermaid 的帮助说

您可以通过复制来可视化图表 将文本放入公共在线 mermaid.js 编辑器或美人鱼 GitHub 代码块

我正在寻找一种编程方式任何一个(1) 将 Javascript 输出嵌入 (R)markdown 文件中,或者(2) 渲染它(如 SVG、PNG 等)。

我认为作为一种快捷方式,我可以剪切并粘贴到由```mermaid 分隔的markdown 代码块中,或者在results = \"asis\" 的块中使用cat(readLines(\"target_mermaid.js\"), sep = \"\\n\"),但我想这只适用于Github markdown(我使用 Pandoc 渲染为 HTML) ... ?

visNetwork 包有一个 visSave() 函数,可以保存到 HTML(不是我想要的,但比我迄今为止管理的更好),还有一个 visExport() 函数(保存到 PNG 等,但仅通过在 Web 浏览器中单击)。此外,targets 包装 visNetwork 函数的方式(到目前为止)对我来说很难解开(即,它不返回 visNetwork 对象,而是自动返回一个小部件......)

目前我可以去https://mermaid.live,粘贴美人鱼代码,然后手动导出PNG,但我真的想以编程方式完成(即作为我工作流程的一部分,不涉及手动步骤)。

    标签: r r-markdown mermaid targets-r-package


    【解决方案1】:

    我不太确定答案。但我有一个想法。如果不够,我将删除:

    如果您想执行美人鱼代码以获取例如 html 输出,那么您可以使用 quarto 执行此操作。我不确定 rmarkdown 是否可行:

    https://quarto.org/docs/authoring/diagrams.htmlS

    ---
    title: "Untitled"
    format: html
    editor: visual
    ---
    
    ## Quarto
    
    Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see <https://quarto.org>.
    
    ## Running Code
    
        ```{mermaid}
        flowchart LR
          A[Hard edge] --> B(Round edge)
          B --> C{Decision}
          C --> D[Result one]
          C --> E[Result two]
        ```
    
    

    输出:

    【讨论】:

    • 我很欣赏这个答案,但我认为这不会奏效,因为块本身的内容是以编程方式生成的.当然,我可以使用另一个步骤来做到这一点(例如,使用sed/cat 将生成的美人鱼代码嵌入到文本中)但我希望避免这种情况......(因为它是不是原始降价,使用带有“asis”的代码块不起作用......(实际上它在 rmarkdown 中不起作用,如果我能让它工作,我不会反对为此切换到 Quarto......)
    • knitr 可以使用此方法生成mermaid.js 代码块:github.com/ropensci/targets/pull/802。这是一个带有results = "asis" 的R 代码块,它输出mermaid.js 代码块的文本行。
    【解决方案2】:

    @landau 的建议看这里几乎工作,如果我愿意使用 Quarto 而不是 Rmarkdown (GH Markdown 不是一个选项)。这个.qmd 文件几乎可以工作,但有以下(外观)问题:

    • 很难抑制 tidyverse 启动消息,因为 targets 在单独的 R 实例中运行可视化代码,用户 (AFAIK) 几乎无法控制;
    • 图表的默认大小是丑陋的。
    ---
    title: "targets/quarto/mermaid example"
    ---
    
    ```{r}
    suppressPackageStartupMessages("tidyverse")
    library("targets")
    ```
    
    ```{r, results = "asis", echo = FALSE}
    cat(c("```{mermaid}", tar_mermaid(), "```"), sep = "\n")
    ```
    

    文件开头:

    缩小:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 2017-01-14
      相关资源
      最近更新 更多