shiny-ggvis | R Documentation |
Embedding ggvis in a shiny app is easy. You need to make a place for it in
your ui.r
with ggvisOutput
, and tell your server.r
where to draw it with bind_shiny
. It's easiest to learn by example:
there are many shiny apps in demo/apps/
that you can learn from.
bind_shiny(
vis,
plot_id,
controls_id = NULL,
...,
session = shiny::getDefaultReactiveDomain()
)
bind_shiny_ui(vis, controls_id, session = shiny::getDefaultReactiveDomain())
ggvisOutput(plot_id = rand_id("plot_id"))
vis |
A ggvis object, or a reactive expression that returns a ggvis object. |
plot_id |
unique identifier to use for the div containing the ggvis plot. |
controls_id |
Unique identifier for controls div. |
... |
Other arguments passed to |
session |
A Shiny session object. |
In your UI, use ggvisOutput()
in ui.r
to insert an html
placeholder for the plot.
If you're going to be using interactive controls generated by ggvis,
use renderUI()
to add a place holder. By convention,
if the id of plot placehold is called "plot", call the controls placeholder
"plot_ui".
When you run ggvis plot interactively, it is automatically plotted because
it triggers the default print method. In shiny apps, you need to
explicitly render the plot to a specific placeholder with
bind_shiny
:
p %>% bind_shiny("plot")
If the plot has controls, and you've reserved space for them in the UI, supply the name of the placeholder as the third argument:
p %>% bind_shiny("plot", "plot_ui")
## Run these examples only in interactive R sessions
if (interactive()) {
# Simplest possible app:
library(shiny)
runApp(list(
ui = bootstrapPage(
ggvisOutput("p"),
uiOutput("p_ui")
),
server = function(..., session) {
mtcars %>%
ggvis(~wt, ~mpg) %>%
layer_points() %>%
layer_smooths(span = input_slider(0, 1)) %>%
bind_shiny("p", "p_ui")
}
))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.