R:将 rgl 小部件组合并保存为单个 html 文件

Oli*_*ieu 4 r widget togglebutton rgl htmlwidgets

在 R 中,使用rglhtmlwidgets库,我试图提取一个 HTML 文件,其中包含一个带切换按钮的小部件。

以下示例在 RStudio 查看器中执行我想要的操作。HTML 导出在没有切换按钮的情况下工作,但在 rglwidget 包含这些按钮时失败。

第一部分基于这些 rgl 示例,以及htmlwidgets 手册中的导出部分。

library(rgl)

open3d()

x <- sin(1:100)
y <- cos(1:100)
z <- -100:100/100

# draw a barrel
sids1 <- spheres3d(x, y, z, col = rainbow(1000),radius=0.05)
# draw a pole
sids2 <- spheres3d(0, 0, z, col = rainbow(1000),radius=0.05)

# create widgets with toggle buttons
widgets <- rglwidget() %>%
  toggleWidget(ids = sids1, label = "Toggle Barrel") %>%
  toggleWidget(ids = sids2, label = "Toggle Pole") 

# Works well in RStudio Viewer
if (interactive()) widgets

# HTML export works without the toggle buttons
htmlwidgets::saveWidget(rglwidget(), "x.html")

# HTML export fails with the toggle buttons
htmlwidgets::saveWidget(widgets, "y.html")
Run Code Online (Sandbox Code Playgroud)

第二个 htmlwidgets::saveWidget 行失败

Error in system.file(config, package = package) : 
  'package' must be of length 1
Run Code Online (Sandbox Code Playgroud)

实际上,widgets 对象是一个包含 3 个项目的列表(3 个小部件!)。每个项目都可以单独保存,例如htmlwidgets::saveWidget(widgets[[1]], "y1.html"). 这将产生 3 个单独的 html 文件。

如何将所有这些小部件组合在一起?根据这个链接,其他人也有类似的问题。

如果未实现此功能,是否还有其他可用的软件包?

use*_*330 5

您的widgets对象是包含 class 的 3 个小部件的列表c("shiny.tag.list","list"),而不是小部件。您可以使用该htmltools::save_html功能保存它。所以代替

htmlwidgets::saveWidget(widgets, "y.html")
Run Code Online (Sandbox Code Playgroud)

你要

htmltools::save_html(widgets, "y.html")
Run Code Online (Sandbox Code Playgroud)