partial_bundle {plotly} | R Documentation |
Leveraging plotly.js' partial bundles can lead to smaller file sizes and faster rendering. The full list of available bundles, and the trace types that they support, are available here
partial_bundle(p, type = "auto", local = TRUE, minified = TRUE)
p |
a plotly object. |
type |
name of the (partial) bundle. The default, |
local |
whether or not to download the partial bundle so that it can be viewed later without an internet connection. |
minified |
whether or not to use a minified js file (non-minified file can be useful for debugging plotly.js) |
WARNING: use this function with caution when rendering multiple plotly graphs on a single website. That's because, if multiple plotly.js bundles are used, the most recent bundle will override the other bundles. See the examples section for an example.
Carson Sievert
# ---------------------------------------------------------------------- # This function is always safe to use when rendering a single # plotly graph. In this case, we get a 3x file reduction. # ---------------------------------------------------------------------- library(plotly) p <- plot_ly(x = 1:10, y = 1:10) %>% add_markers() save_widget <- function(p, f) { owd <- setwd(dirname(f)) on.exit(setwd(owd)) htmlwidgets::saveWidget(p, f) mb <- round(file.info(f)$size / 1e6, 3) message("File is: ", mb," MB") } f1 <- tempfile(fileext = ".html") f2 <- tempfile(fileext = ".html") save_widget(p, f1) save_widget(partial_bundle(p), f2) # ---------------------------------------------------------------------- # But, since plotly.js bundles override one another, # be careful when putting multiple graphs in a larger document! # Note how the surface (part of the gl3d bundle) renders, but the # heatmap (part of the cartesian bundle) doesn't... # ---------------------------------------------------------------------- ## Not run: library(htmltools) p1 <- plot_ly(z = ~volcano) %>% add_heatmap() %>% partial_bundle() p2 <- plot_ly(z = ~volcano) %>% add_surface() %>% partial_bundle() browsable(tagList(p1, p2)) ## End(Not run)