我开始在R中使用plot.ly,我很惊讶使用htmlwidgets直接在html中发布我的图表的可能性。 到目前为止,我无法在同一个html中保存多个小部件。 我已经在独立的htmls中保存了多个小部件,而不是在html代码中手动组合它,但我希望能够在R中完成它。
一个简单的例子:
#graph
graph<- ggplot(df, aes(x = Data, y=tax))+ geom_bar(stat='identity')
gg <- ggplotly(graph)
# save as HtmlWigdet
htmlwidgets::saveWidget(as.widget(gg), "Index.html")
如何解析多个ggplotly对象以保存窗口小部件?
(这是我在stackoverflow中的第一个问题,希望我做对了!问候!)
答案 0 :(得分:1)
您之后的用例是什么?您可能需要考虑将这些图表添加到Flexdashboard(在R Markdown中创建)。这是我最近的转到,与Plotly结合。
答案 1 :(得分:0)
这是我根据htmltools
包的各个部分改编的功能,用于保存标签列表,然后返回iframe
标签。您可以使用htmlwidgets
包装多个htmltools::tagList
,然后使用此函数来保存整个群。
save_tags <- function (tags, file, selfcontained = F, libdir = "./lib")
{
if (is.null(libdir)) {
libdir <- paste(tools::file_path_sans_ext(basename(file)),
"_files", sep = "")
}
htmltools::save_html(tags, file = file, libdir = libdir)
if (selfcontained) {
if (!htmlwidgets:::pandoc_available()) {
stop("Saving a widget with selfcontained = TRUE requires pandoc. For details see:\n",
"https://github.com/rstudio/rmarkdown/blob/master/PANDOC.md")
}
htmlwidgets:::pandoc_self_contained_html(file, file)
unlink(libdir, recursive = TRUE)
}
return(htmltools::tags$iframe(src= file, height = "400px", width = "100%", style="border:0;"))
}