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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R:将rgl小部件组合并保存为单个html文件相关的知识,希望对你有一定的参考价值。

在R中,使用rgl和htmlwidgets库,我正在尝试提取一个带有切换按钮的小部件的HTML文件。

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

第一部分基于these rgl examples,以及the htmlwidgets manual的出口部分。

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")

第二个htmlwidgets :: saveWidget行失败了

Error in system.file(config, package = package) : 
  'package' must be of length 1

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

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

如果没有实现此功能,是否有其他包可以使用?

答案

您的widgets对象是包含类c("shiny.tag.list","list")的3个小部件的列表,而不是小部件。您可以使用htmltools::save_html函数保存它。而不是

htmlwidgets::saveWidget(widgets, "y.html")

你要

htmltools::save_html(widgets, "y.html")

以上是关于R:将rgl小部件组合并保存为单个html文件的主要内容,如果未能解决你的问题,请参考以下文章

在 rgl R 包的 plot3d 函数生成的 3D 图上使众多组易于区分

怎样将以保存下来多个.html文件合并在一起生成1个.html文件?

HTML DOM 使用循环将分页的 XML 文件合并为单个文件

将 int 数组合并为单个 int

将多个 JSON 文件合并为单个 JSON 和 parquet 文件

R:rgl 包的 writePLY 函数未正确写入顶点颜色