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

如何在RMarkdown循环中动态输出rgl 3D图至HTML?

在RMarkdown循环中动态输出rgl 3D图的解决方案

要实现循环里动态生成子标题并输出rgl 3D图到HTML,按以下方式调整代码即可:

核心要点

  • 代码块必须启用results='asis',让动态生成的Markdown标题被正确渲染
  • 用rglwidget()把rgl 3D图转为HTML可交互组件,再通过print()输出
  • 每次循环后关闭rgl设备,防止绘图叠加

完整代码示例

{r, results='asis', echo=TRUE}
library(rgl)
library(htmlwidgets)

x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x,y)

cols <- c("red", "orange", "green", "blue", "purple")

for(i in 1:3){
  # 输出动态子标题和说明文本
  cat(sprintf("\n\n## 3D Plot for Sample %s\n\n", i))
  cat("Here we plot a 3d PCA plot for this sample.\n\n")
  
  # 生成3D图
  plot3d(x, y, z, col = cols[i])
  
  # 输出可交互的3D图组件
  print(rglwidget())
  
  # 关闭当前rgl设备,避免后续绘图叠加
  rgl.close()
}

关键细节说明

  • results='asis':让cat()输出的Markdown语法(比如标题)被直接解析渲染,而不是当作普通文本显示
  • rglwidget():将rgl的3D场景转换为HTML widget,这是实现3D图在HTML中交互显示的核心步骤
  • rgl.close():每次循环后关闭rgl设备,确保下一次循环生成的是全新的3D场景,不会和之前的图重叠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:25:14