【问题标题】:R : combine and save rgl widgets as a single html fileR:将 rgl 小部件组合并保存为单个 html 文件
【发布时间】:2018-06-03 21:08:00
【问题描述】:

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

以下示例在 RStudio 查看器中完成了我想要的操作。 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

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

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

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

【问题讨论】:

    标签: r widget togglebutton rgl htmlwidgets


    【解决方案1】:

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

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

    你想要的

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

    【讨论】:

    • 如此简单!非常感谢。
    • 伙计,这个是救生员。我写了一个完整的函数来保存和合并html文件文件,然后我突然发现了这个。感谢分享。
    • 你能看看我的问题吗? stackoverflow.com/questions/65606653/… 谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 2013-11-20
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多