Creation of Vega-Lite spec charts is virtually 100% feature complete.
Some of the parameters to functions are only documented in TypeScript
source code which will take a bit of time to
wade through. All the visualizations you find in the
Vega-Lite Gallery work.
Functions also exist which enable creation of widgets from a JSON spec and
turning a vegalite
package created object into a JSON spec.
You start by calling vegalite()
which allows you to setup core
configuration options, including whether you want to display links to
show the source and export the visualization. You can also set the background
here and the viewport_width
and viewport_height
. Those are
very important as they control the height and width of the widget and also
the overall area for the chart. This does not set the height/width
of the actual chart. That is done with cell_size()
.
Once you instantiate the widget, you need to add_data()
which can
be data.frame
, local CSV, TSV or JSON file (that convert to
data.frame
s) or a non-realive URL (wich will not be read and
converted but will remain a URL in the Vega-Lite spec.
You then need to encode_x()
& encode_y()
variables that
map to columns in the data spec and choose one mark_...()
to
represent the encoding.
Here's a sample, basic Vega-Lite widget:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | dat <- jsonlite::fromJSON('[
{"a": "A","b": 28}, {"a": "B","b": 55}, {"a": "C","b": 43},
{"a": "D","b": 91}, {"a": "E","b": 81}, {"a": "F","b": 53},
{"a": "G","b": 19}, {"a": "H","b": 87}, {"a": "I","b": 52}
]')
vegalite()
add_data(dat)
encode_x("a", "ordinal")
encode_y("b", "quantitative")
mark_bar() -> vl
vl
|
That is the minimum set of requirements for a basic Vega-Lite spec and will create a basic widget.
You can also convert that R widget object to_spec()
which will return
the JSON for the Vega-Lite spec (allowing you to use it outside of R).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | to_spec(vl)
{
"description": "",
"data": {
"values": [
{ "a": "A", "b": 28 }, { "a": "B", "b": 55 }, { "a": "C", "b": 43 },
{ "a": "D", "b": 91 }, { "a": "E", "b": 81 }, { "a": "F", "b": 53 },
{ "a": "G", "b": 19 }, { "a": "H", "b": 87 }, { "a": "I", "b": 52 }
]
},
"mark": "bar",
"encoding": {
"x": {
"field": "a",
"type": "nominal"
},
"y": {
"field": "b",
"type": "quantitative"
}
},
"config": [],
"embed": {
"renderer": "svg",
"actions": {
"export": false,
"source": false,
"editor": false
}
}
}
|
If you already have a Vega-Lite JSON spec that has embedded data or a
non-realtive URL, you can create a widget from it via from_spec()
by passing in the full JSON spec or a URL to a full JSON spec.
If you're good with HTML (etc) and want a more lightweight embedding options, you
can also use embed_spec
which will scaffold a minimum div
+
script
source and embed a spec from a vegalite
object.
If you like the way Vega-Lite renders charts, you can also use them as static
images in PDF knitted documents with the new capture_widget
function.
(NOTE that as of this writing, you can just use the development version of
knitr
instead of this function.)
Bob Rudis (@hrbrmstr)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.