所以我有两个html页面,html_1.html
和html_2.html
我想在R中将它们叠加在另一个上面。怎么做?
示例:
library(dygraphs)
m1 = dygraph(nhtemp, main = "New Haven Temperatures") %>%
dyRangeSelector(dateWindow = c("1920-01-01", "1960-01-01"))
m2 = dygraph(nhtemp, main = "New Haven Temperatures") %>%
dyRangeSelector(dateWindow = c("1920-01-01", "1960-01-01"))
library(htmltools)
save_html(m1, file = 'm1.html')
save_html(m2, file = 'm2.html')
##Now load and merge m1.html and m2.html
答案 0 :(得分:1)
最简单的方式是使用R降价文档:
library(dygraphs)
library(htmlwidgets)
library(htmltools)
w1 <- dygraph(nhtemp, main = "New Haven Temperatures", elementId = "a") %>%
dyRangeSelector(dateWindow = c("1920-01-01", "1960-01-01"))
w2 <- dygraph(nhtemp, main = "New Haven Temperatures", elementId = "b") %>%
dyRangeSelector(dateWindow = c("1920-01-01", "1960-01-01"))
saveWidget(w1, "w1.html")
saveWidget(w2, "w2.html")
w1_src <- sprintf("data:text/html;base64,%s", openssl::base64_encode(rawToChar(readBin("w1.html", "raw", file.size("w1.html")))))
w2_src <- sprintf("data:text/html;base64,%s", openssl::base64_encode(rawToChar(readBin("w2.html", "raw", file.size("w2.html")))))
tags$html(
tags$body(
tags$iframe(src=w1_src, seamless="", frameborder="0", allowtransparency="true", scrolling="no", style="width:100%;height:400px"),
tags$iframe(src=w2_src, seamless="", frameborder="0", allowtransparency="true", scrolling="no", style="width:100%;height:400px")
)
) %>%
save_html("bothwidgets.html")
为你处理许多复杂的事情。
重量级方式是自己构建页面,而不会深入了解widget javascript依赖项的细节:
save_html()
您不能只是iframe
一个小部件,因为它们依赖于为您自动合并的组件。您需要在第二种方法中使用iframe
,除非您希望自己处理小部件依赖重复数据删除和适当的组件包含以获得更轻量级的文档。
在这种情况下,差异不是太大,但仍然很大。第一个输出文件是1.3MB,第二个是2MB。
请注意,您可能需要比在生产环境中更好地调整{{1}}的大小。