ggvis 0.4.3

by Winston Chang
Other versions:

Monthly downloads




Interactive Grammar of Graphics

An implementation of an interactive grammar of graphics, taking the best parts of 'ggplot2', combining them with the reactive framework of 'shiny' and drawing web graphics using 'vega'.



Build Status

The goal of ggvis is to make it easy to describe interactive web graphics in R. It combines:

  • a grammar of graphics from ggplot2,

  • reactive programming from shiny, and

  • data transformation pipelines from dplyr.

ggvis graphics are rendered with vega, so you can generate both raster graphics with HTML5 canvas and vector graphics with svg. ggvis is less flexible than raw d3 or vega, but is much more succinct and is tailored to the needs of exploratory data analysis.

If you find a bug, please file a minimal reproducible example at If you're not sure if something is a bug, you'd like to discuss new features or have any other questions about ggvis, please join us on the mailing list:


Install the latest release version from CRAN with:


Install the latest development version with:

# install.packages("devtools")
devtools::install_github("hadley/lazyeval", build_vignettes = FALSE)
devtools::install_github("hadley/dplyr", build_vignettes = FALSE)
devtools::install_github("rstudio/ggvis", build_vignettes = FALSE)

Getting started

You construct a visualisation by piping pieces together with %>%. The pipeline starts with a data set, flows into ggvis() to specify default visual properties, then layers on some visual elements:

mtcars %>% ggvis(~mpg, ~wt) %>% layer_points()

The vignettes, available from, provide many more details. Start with the introduction, then work your way through the more advanced topics. Also check out the various demos in the demo/ directory. See the basics in demo/scatterplot.r then check out the the coolest demos, demo/interactive.r and demo/tourr.r.

Functions in ggvis

Name Description
add_axis Add a vega axis specification to a ggvis plot
cocaine Cocaine seizures in the US.
compute_align Align positions using length.
compute_bin Bin data along a continuous variable
compute_boxplot Calculate boxplot values
band A band
compute_density Compute density of data.
compute_count Count data at each location
auto_group Automatically group data by grouping variables
bin_vector Bin vectors
axis_props Create an axis_props object for controlling axis properties.
compute_tabulate Count data at each location of a categorical variable
create_broker Create a broker object
compute_model_prediction Create a model of a data set and compute predictions.
compute_stack Stack overlapping data.
create_input Create a new interactive "input" object.
default_options Default options
explain Explain details of an object
explain.ggvis Print out the structure of a ggvis object in a friendly format
dplyr-ggvis Dplyr verbs for ggvis.
export_png Export a PNG or SVG from a ggvis object
fullseq Generate sequence of fixed size intervals covering range.
ggvis Visualise a data set with a ggvis graphic.
handle_click Handle mouse actions on marks.
get_data Get data from a ggvis object
ggvisOutputElements Create HTML elements for ggvis output
group_by Divide data into groups.
handle_brush Handle brush events on a visualisation.
ggvis_message Send a message to ggvis running on client
ggvis_scale Create a new ggvis_scale object.
ggvisControlOutput Create a ggvis control output element in UI
input_slider Create an interactive slider.
input_select Create interactive control to select one (or more options) from a list.
input_text Create an interactive text or numeric input box.
is.ggvis Is an object a ggvis object?
is.axis_props Tests whether an object is an axis_props object Determine if an object is a broker object
is.dynamic Determine if an ggvis is dynamic (i.e. needs to be run in a shiny app)
is.legend_props Tests whether an object is a legend_props object
handle_resize Handlers and interactive inputs for plot sizing.
input_checkbox Create an interactive checkbox.
layer_guess Guess the right type of layer based on current properties.
is.scaled_value Tests whether an object is a scaled_value object
knit_print.ggvis Knit print method for ggvis plots.
layer_lines Layer lines on a plot.
layer_densities Transformation: density estimate
layer_boxplots Display data with a boxplot.
layer_f Create a new layering function.
layer_model_predictions Overlay model predictions or a smooth curve.
layer_bars Display data with bars (a barchart).
marks Vega marks.
layer_histograms Display binned data
new_prop Create new prop object
left_right Interactive inputs bound to arrow keys.
legend_props Create an axis_props object for controlling legend properties.
save_spec Tools to save and view static specs.
%>% Pipe graphics
scale_datetime Add a date-time scale to a ggvis object.
padding Define padding.
scale_numeric Add a numeric scale to a ggvis object.
singular singular.
scale_ordinal Add a ordinal, nominal, or logical scale to a ggvis object.
sidebarBottomPage Create a page with a sidebar
add_guide_legend Defunct function for adding a legend
add_guide_axis Defunct function for adding an axis
add_legend Add a vega legend specification to a ggvis plot
add_props Add visual properties to a visualisation
linked_brush Create a linked brush object.
mark Create a new "mark" object.
prop Create a property.
propname_to_scale Convert the name of a property to the name of its default scale.
show_tooltip Send a message to the client to show or hide a tooltip
show_spec Print out the vega plot specification
add_relative_scales Add x_rel and y_rel scales
add_scale Add arbitrary scales to ggvis.
prop_domain Property domain.
print.ggvis View in a ggvis plot in the browser.
scales Add a scale to a ggvis plot
vega_data_parser Determine the vega data type for a vector
scaled_value Create a scaled_value object
add_data Add dataset to a visualisation
waggle Waggle back and forth between two numbers
props Manage a list of properties.
resolution Compute the "resolution" of a data vector.
set_scale_label Set the label for a scale
shiny-ggvis Connect a ggvis graphic to a shiny app.
vector_type Determine the "type" of a vector
subvis Create a subvisualisation.
zero_range Determine if range of vector is close to zero, with a specified tolerance
add_tooltip Add tooltips to a plot.
scaletype_to_vega_scaletype Given the type of a ggvis scale, get the name of its corresponding vega scale
set_options Set options for a ggvis plot
as.vega Coerce an ggvis object to a vega list.
No Results!

Last month downloads


Encoding UTF-8
License GPL-2 | file LICENSE
LazyData true
RoxygenNote 5.0.1
NeedsCompilation no
Packaged 2016-07-22 16:15:28 UTC; winston
Repository CRAN
Date/Publication 2016-07-22 18:45:42

Include our badge in your README