There are two ways to change a Vega chart: by setting a signal or by setting a dataset; you can also direct a Vega chart to re-run itself. Any signal or dataset you set must first be defined and named in the vegaspec. These functions are called from within a Shiny server() function, where they act like shiny::observe() or shiny::observeEvent().

vw_shiny_set_signal(outputId, name, value, run = TRUE, ...)

vw_shiny_set_data(outputId, name, value, run = TRUE, ...)

vw_shiny_run(outputId, value, ...)



character, shiny outputId for the vegawidget


character, name of the signal or dataset being set, as defined in the vegaspec


reactive expression, e.g. input$slider or dataset(), that returns the value to which to set the signal or dataset


logical indicates if the chart is to be run immediately


other arguments passed on to shiny::observeEvent()


shiny::observeEvent() function that responds to changes in the reactive-expression value


To see these functions in action, you can run a shiny-demo:

  • vw_shiny_set_signal(): call vw_shiny_demo("signal-set-get")

  • vw_shiny_set_data(): call vw_shiny_demo("data-set-get")

  • vw_shiny_run(): call vw_shiny_demo("data-set-swap-run")

For the signal and data setters, in addition to the chart outputId, you will need to provide:

  • the name of the signal or dataset you wish to keep updated

  • the value to which you want to set the signal or dataset; this should be a reactive expression like input$slider or rct_dataset()

  • whether or not you want to run the Vega view again immediately after setting this value

If you do not set run = TRUE in the setter-function, you can use the vw_shiny_run() function to control when the chart re-runs. One possibility is to set its value to a reactive expression that refers to, for example, a shiny::actionButton().