Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vegawidget/vegawidget
Htmlwidget renderer for Vega and Vega-Lite
https://github.com/vegawidget/vegawidget
Last synced: 3 months ago
JSON representation
Htmlwidget renderer for Vega and Vega-Lite
- Host: GitHub
- URL: https://github.com/vegawidget/vegawidget
- Owner: vegawidget
- License: other
- Created: 2018-06-17T16:06:53.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-01-13T17:28:41.000Z (10 months ago)
- Last Synced: 2024-07-08T00:21:50.870Z (4 months ago)
- Language: R
- Homepage: https://vegawidget.github.io/vegawidget
- Size: 11.9 MB
- Stars: 65
- Watchers: 6
- Forks: 15
- Open Issues: 20
-
Metadata Files:
- Readme: README.Rmd
- Contributing: CONTRIBUTING.Rmd
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-shiny-extensions - vegawidget - HTML widget renderer for Vega and Vega-Lite. (Visualization / General-Purpose)
- jimsghstars - vegawidget/vegawidget - Htmlwidget renderer for Vega and Vega-Lite (R)
README
---
output: github_document
---```{r, echo = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
dev = "svg"
)url_local <- function(x) {
file.path("https://vegawidget.github.io/vegawidget", x)
}
```[![CRAN status](https://www.r-pkg.org/badges/version/vegawidget)](https://cran.r-project.org/package=vegawidget)
[![lifecycle](https://img.shields.io/badge/lifecycle-maturing-blue.svg)](https://lifecycle.r-lib.org/articles/stages.html#maturing)
[![R-CMD-check](https://github.com/vegawidget/vegawidget/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/vegawidget/vegawidget/actions/workflows/R-CMD-check.yaml)# vegawidget
[Vega-Lite](https://vega.github.io/vega-lite/) is an implementation of the grammar-of-graphics, rendered in the browser with interactivity.
The goal of vegawidget is to render Vega-Lite and Vega specifications as htmlwidgets, and to help you communicate with a Vega chart using JavaScript or Shiny.
Its ambition is to be a *low-level* interface to the Vega(-Lite) API, so that other packages can build upon it.Accordingly, this package may be useful to:
- build (using lists of lists) re-usable Vega and Vega-Lite specifications for deployment elsewhere.
- develop higher-level, user-friendly packages to compose specific types of plots, or even to build a general ggplot2-like framework, using this package as the rendering foundation.## Features
### New to vegawidget 0.4
- vegawidget now supports the last two Vega-Lite major-versions,
currently versions 5 and 4.
However, for a given R session (e.g. rendering of an RMarkdown file), the
`vegawidget()` function can use only *one* major-version; this version
is determined using the `$schema` element of the first `vegaspec` evaluated
using `vegawidget()`.
This restriction does not apply to the image functions, e.g. `vw_to_svg()`,
or to the compilation function, `vw_to_vega()`.- use `vega_version_all()` to see the available versions:
```{r}
library("vegawidget")vega_version_all()
```- Compiling a spec and creating an image now uses the **[V8](https://cran.r-project.org/package=V8)** package, rather than depending on a local installation of nodejs.
## Installation
You can install vegawidget from CRAN with:
```{r cran-installation, eval=FALSE}
install.packages("vegawidget")
```The development version of vegawidget is available from GitHub with:
```{r gh-installation, eval=FALSE}
# install.packages("devtools")
devtools::install_github("vegawidget/vegawidget")
```**Note:** There are documentation websites for both the [CRAN version](https://vegawidget.github.io/vegawidget/) and the [development version](https://vegawidget.github.io/vegawidget/dev/) of this package.
## Introduction
Vega(-Lite) specifications are just text, formatted as JSON. However, in R, we can use lists to build specifications:
```{r spec}
library("vegawidget")spec_mtcars <-
list(
`$schema` = vega_schema(), # specifies Vega-Lite
description = "An mtcars example.",
data = list(values = mtcars),
mark = "point",
encoding = list(
x = list(field = "wt", type = "quantitative"),
y = list(field = "mpg", type = "quantitative"),
color = list(field = "cyl", type = "nominal")
)
) %>%
as_vegaspec()
```The `as_vegaspec()` function is used to turn the list into a *vegaspec*; many of this package's functions are built to support, and render, vegaspecs:
```{r vegawidget}
spec_mtcars
```The rendering of the chart above depends on where you are reading it:
- On this package's [pkgdown site](https://vegawidget.github.io/vegawidget/), it is rendered as part of an HTML environment, showing its full capabilities.
- At its [GitHub code site](https://github.com/vegawidget/vegawidget), the chart is further rendered to a static SVG file, then incorporated into the Markdown rendering.
A [learnr](https://rstudio.github.io/learnr/index.html) tutorial is available: `learnr::run_tutorial("overview", package = "vegawidget")`.
For more, please see our [Getting Started](https://vegawidget.github.io/vegawidget/articles/vegawidget.html) article. Additionally, the [Vega-Lite website](https://vega.github.io/vega-lite/) has a comprehensive introduction.
Other articles for this package:
- [Specify using vegaspec](https://vegawidget.github.io/vegawidget/articles/articles/vegaspec.html): how to construct and render a vegaspec.
- [Render using vegawidget](https://vegawidget.github.io/vegawidget/articles/articles/render-vegawidget.html): advanced rendering options.
- [Extend using Shiny](https://vegawidget.github.io/vegawidget/articles/articles/shiny.html): how to interact with Vega charts using Shiny.
- [Extend using JavaScript](https://vegawidget.github.io/vegawidget/articles/articles/javascript.html): how to interact with Vega charts using JavaScript.
- [Create Images](https://vegawidget.github.io/vegawidget/articles/articles/image.html): how to create and save PNG or SVG images.
- [Work with Dates and Times](https://vegawidget.github.io/vegawidget/articles/articles/dates-times.html): dates and times in Vega(-Lite) work a little differently from R.
- [Import into Other Packages](https://vegawidget.github.io/vegawidget/articles/articles/import.html): how to import vegawidget functions into your package, then re-export them.## Acknowledgements
- [Alicia Schep](https://github.com/AliciaSchep) has been instrumental in guiding the evolution of the API, and for introducing new features, particularly the JavaScript and Shiny functions.
- [Haley Jeppson](https://github.com/haleyjeppson) and [Stuart Lee](https://github.com/sa-lee) have provided valuable feedback and contributions throughout the package's development.
- [Bob Rudis](https://github.com/hrbrmstr) and the [vegalite](https://github.com/hrbrmstr/vegalite) package provided a lot of the inspiration for this work, providing a high-level interface to Vega-Lite.
- The [Altair](https://altair-viz.github.io) developers, for further popularizing the notion of using a programming language (Python) to create and render Vega-Lite specifications.
- The [Vega-Lite](https://vega.github.io/vega-lite/) developers, for providing a foundation upon which the rest of this is built.## Contributing
Contributions are welcome, please see this [guide](`r url_local("CONTRIBUTING.html")`).
Please note that this project is released with a [Contributor Code of Conduct](`r url_local("CODE_OF_CONDUCT.html")`). By participating in this project you agree to abide by its terms.