There are three types of information you can get from a Vega chart, a signal, data (i.e. a dataset), and information associated with an event. A dataset or a signal must first be defined and named in the vegaspec.

vw_shiny_get_signal(outputId, name, body_value = "value")

vw_shiny_get_data(outputId, name, body_value = "value")

vw_shiny_get_event(outputId, event, body_value = "datum")

Arguments

outputId

character, shiny outputId for the vegawidget

name

character, name of the signal (defined in Vega specification) being monitored

body_value

character or JS_EVAL, the body of a JavaScript function that Vega will use to handle the signal or event; this function must return a value

event

character, type of the event being monitored, e.g. "click", for list of supported events, please see Vega Event-Stream reference

Value

shiny::reactive() function that returns the value returned by body_value

Details

These getter-functions are called from within a Shiny server() function, where they act like shiny::reactive(), returning a reactive expression.

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

In addition to the chart outputId, you will need to provide:

  • vw_shiny_get_signal(): the name of the signal, as defined in the Vega specification

  • vw_shiny_get_data(): the name of the dataset, as defined in the Vega specification

  • vw_shiny_get_event(): the event type, as defined in the Vega Event-Stream reference

When the signal or data changes, or when the event fires, Vega needs to know which information you want returned to Shiny. To do this, you provide a JavaScript handler-function:

  • vw_shiny_get_signal(): the default handler, vw_handler_signal("value"), specifies that the value of the signal be returned.

  • vw_shiny_get_data(): the default handler, vw_handler_data("value"), specifies that the entire dataset be returned.

  • vw_shiny_get_event(): the default handler, vw_handler_event("datum"), specifies that the single row of data associated with graphical mark be returned. For example, if you are monitoring a "click" event, Vega would return the row of data that backs any mark (like a point) that you click.

If you need to specify a different behavior for the handler, there are a couple of options. This package provides a library of handler-functions; call vw_handler_signal(), vw_handler_data(), or vw_handler_event() without arguments to list the available handlers.

If the library does not contain the handler you need, the body_value argument will also accept a character string which will be used as the body of the handler function.

For example, these calls are equivalent:

  • vw_shiny_get_signal(..., body_value = "value")

  • vw_shiny_get_signal(..., body_value = vw_handler_signal("value"))

  • vw_shiny_get_signal(..., body_value = "return value;")

If you use a custom-handler that you think may be useful for the handler-function library, please file an issue.

See also