You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DiagrammeR包技术咨询:如何在Rmarkdown中仅输出图表而非代码

解决方案

一、在Rmarkdown里正常渲染图表(不显示原始代码)

推荐两种更靠谱的方法:

方法1:直接用mermaid代码块

不用DiagrammeR包,把你的流程图代码直接放进mermaid代码块里,Rmarkdown会自动渲染成图表,完全不会显示原始代码:

graph LR;A(GPS data)-->C{Analytic data};
B[Weather data]-->C{Analytic data};
D[Masking mandatory/compliance]-->C{Analytic data};
E[Demographics]-->C{Analytic data};
F[Covid-testing result]-->C{Analytic data};
G[Covid confirmed cases]-->C{Analytic data};
C{Analytic data}-->M[Modeling];
M[Modeling]-->V[Data visualization]

style A fill:#E5E25F;  style B fill:#87AB51; style C fill:#3C8937;
style D fill:#23772C;  style E fill:#B6E6E6;
style F fill:#E5E25F;  style G fill:#87AB51; style M fill:#3C8937;
style V fill:#23772C;

方法2:调整R代码块选项(保留DiagrammeR调用)

如果一定要用DiagrammeR,除了加echo=F,还要给代码块加上results='asis'选项,确保输出直接渲染成图表:

```{r, echo=F, results='asis'}
covid <- "graph LR;A(GPS data)-->C{Analytic data};
B[Weather data]-->C{Analytic data};
D[Masking mandatory/compliance]-->C{Analytic data};
E[Demographics]-->C{Analytic data};
F[Covid-testing result]-->C{Analytic data};
G[Covid confirmed cases]-->C{Analytic data};
C{Analytic data}-->M[Modeling];
M[Modeling]-->V[Data visualization]

style A fill:#E5E25F;  style B fill:#87AB51; style C fill:#3C8937;
style D fill:#23772C;  style E fill:#B6E6E6;
style F fill:#E5E25F;  style G fill:#87AB51; style M fill:#3C8937;
style V fill:#23772C;  "

DiagrammeR::mermaid(covid)
## 二、导出为PNG图片
有两种工具链可以实现:

### 工具链1:用webshot2转换
先装依赖包,再生成并导出:
```r
# 安装包
install.packages(c("DiagrammeR", "webshot2"))
webshot2::install_phantomjs() # 没装phantomjs的话执行这句

# 生成并导出
library(DiagrammeR)
library(webshot2)

covid <- "graph LR;A(GPS data)-->C{Analytic data};
B[Weather data]-->C{Analytic data};
D[Masking mandatory/compliance]-->C{Analytic data};
E[Demographics]-->C{Analytic data};
F[Covid-testing result]-->C{Analytic data};
G[Covid confirmed cases]-->C{Analytic data};
C{Analytic data}-->M[Modeling];
M[Modeling]-->V[Data visualization]

style A fill:#E5E25F;  style B fill:#87AB51; style C fill:#3C8937;
style D fill:#23772C;  style E fill:#B6E6E6;
style F fill:#E5E25F;  style G fill:#87AB51; style M fill:#3C8937;
style V fill:#23772C;  "

# 生成图表对象
covid_graph <- mermaid(covid)
# 存为临时HTML
html_temp <- tempfile(fileext = ".html")
saveWidget(covid_graph, html_temp)
# 转成PNG保存
webshot(html_temp, "covid_flowchart.png", vwidth = 800, vheight = 600)

工具链2:用DiagrammeRsvg+rsvg转换

通过SVG中转导出PNG:

# 安装包
install.packages(c("DiagrammeR", "DiagrammeRsvg", "rsvg"))

# 生成并导出
library(DiagrammeR)
library(DiagrammeRsvg)
library(rsvg)

covid <- "graph LR;A(GPS data)-->C{Analytic data};
B[Weather data]-->C{Analytic data};
D[Masking mandatory/compliance]-->C{Analytic data};
E[Demographics]-->C{Analytic data};
F[Covid-testing result]-->C{Analytic data};
G[Covid confirmed cases]-->C{Analytic data};
C{Analytic data}-->M[Modeling];
M[Modeling]-->V[Data visualization]

style A fill:#E5E25F;  style B fill:#87AB51; style C fill:#3C8937;
style D fill:#23772C;  style E fill:#B6E6E6;
style F fill:#E5E25F;  style G fill:#87AB51; style M fill:#3C8937;
style V fill:#23772C;  "

# 导出为SVG字符串
svg_str <- export_svg(mermaid(covid))
# 转成PNG保存
writeBin(rsvg_png(charToRaw(svg_str)), "covid_flowchart.png")

内容的提问来源于stack exchange,提问作者ponyhd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:54:30