Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial draft of JOSS paper #394

Merged
merged 17 commits into from
Oct 15, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions paper/paper.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
@article{2011-d3,
title = {D3: Data-Driven Documents},
author = {Michael Bostock AND Vadim Ogievetsky AND Jeffrey Heer},
journal = {IEEE Trans. Visualization \& Comp. Graphics (Proc. InfoVis)},
year = {2011},
url = {http://idl.cs.washington.edu/papers/d3},
}

@article{2017-vega-lite,
title = {Vega-Lite: A Grammar of Interactive Graphics},
author = {Arvind Satyanarayan AND Dominik Moritz AND Kanit Wongsuphasawat AND Jeffrey Heer},
journal = {IEEE Trans. Visualization \& Comp. Graphics (Proc. InfoVis)},
year = {2017},
url = {http://idl.cs.washington.edu/papers/vega-lite},
}

@inproceedings{2017-voyager2,
title = {Voyager 2: Augmenting Visual Analysis with Partial View Specifications},
author = {Kanit Wongsuphasawat AND Zening Qu AND Dominik Moritz AND Riley Chang AND Felix Ouk AND Anushka Anand AND Jock Mackinlay AND Bill Howe AND Jeffrey Heer},
booktitle = {ACM Human Factors in Computing Systems (CHI)},
year = {2017},
url = {http://idl.cs.washington.edu/papers/voyager2},
}

@article{2016-voyager,
title = {Voyager: Exploratory Analysis via Faceted Browsing of Visualization Recommendations},
author = {Kanit Wongsuphasawat AND Dominik Moritz AND Anushka Anand AND Jock Mackinlay AND Bill Howe AND Jeffrey Heer},
journal = {IEEE Trans. Visualization \& Comp. Graphics (Proc. InfoVis)},
year = {2016},
url = {http://idl.cs.washington.edu/papers/voyager},
}

@article{2016-reactive-vega-architecture,
title = {Reactive Vega: A Streaming Dataflow Architecture for Declarative Interactive Visualization},
author = {Arvind Satyanarayan AND Ryan Russell AND Jane Hoffswell AND Jeffrey Heer},
journal = {IEEE Trans. Visualization \& Comp. Graphics (Proc. InfoVis)},
year = {2016},
url = {http://idl.cs.washington.edu/papers/reactive-vega-architecture},
}

@book{1977-exploratory,
title={Exploratory data analysis},
author={Tukey, John W},
volume={2},
year={1977},
publisher={Reading, Mass.}
}

@book{2005-grammar,
author = {Wilkinson, Leland},
title = {The Grammar of Graphics (Statistics and Computing)},
year = {2005},
isbn = {0387245448},
publisher = {Springer-Verlag New York, Inc.},
address = {Secaucus, NJ, USA},
}
100 changes: 100 additions & 0 deletions paper/paper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
---
title: 'Altair: interactive statistical visualizations for Python'
tags:
- Python
- visualization
- statistics
- Jupyter
authors:
- name: Jacob VanderPlas
orcid: 0000-0002-9623-3401
affiliation: 1
- name: Brian E. Granger
orcid: 0000-0002-5223-6168
affiliation: 2
- name: Jeffrey Heer
orcid: 0000-0002-6175-1655
affiliation: 1
- name: Dominik Moritz
orcid: 0000-0002-3110-1053
affiliation: 1
- name: Kanit Wongsuphasawat
orcid: 0000-0001-7231-279X
affiliation: 1
- name: Eitan Lees
orcid: 0000-0003-0988-6015
affiliation: 3
- name: Ilia Timofeev
orcid: 0000-0003-1795-943X
affiliation: 4
- name: Ben Welsh
orcid: 0000-0002-5200-7269
affiliation: 5
- name: Scott Sievert
orcid: 0000-0002-4275-3452
affiliation: 6

affiliations:
- name: University of Washington
index: 1
- name: California Polytechnic State University, San Luis Obispo
index: 2
- name: Florida State University
index: 3
- name: TTS Consulting
index: 4
- name: Los Angeles Times Data Desk
index: 5
- name: University of Wisconsin--Madison
index: 6
date: 07 August 2018
bibliography: paper.bib
---

# Summary

Altair is a declarative statistical visualization library for Python.
Statistical visualization is a constrained subset of data visualization focused on the creation of visualizations
that are helpful in statistical modeling. The constrained model of statistical visualization is usually expressed
in terms of a visualization grammar [2005-grammar] that specifies how input data is transformed and mapped to visual
properties (position, color, size, etc.).

Altair is based on the Vega-Lite visualization grammar [@2017-vega-lite], which allows a wide range of statistical
visualizations to be expressed using a small number of grammar primitives. Vega-Lite implements a view composition
algebra in conjunction with a novel grammar of interactions that allow users to specify interactive charts in an few
lines of code. Vega-Lite is declarative; visualizations are specified using JSON data that follows the
[Vega-Lite JSON schema](https://github.com/vega/schema). As a Python library, Altair provides an API oriented towards
scientists and data scientists doing exploratory data analysis [@1977-exploratory]. Altair's Python API emits Vega-Lite
JSON data, which is then rendered in a user-interface such as the Jupyter Notebook, JupyterLab, or nteract using the
[Vega-Lite JavaScript library](https://vega.github.io/vega-lite/). Vega-Lite JSON is compiled to a full Vega
specification [@2016-reactive-vega-architecture], which is then parsed and executed using a reactive runtime that
internally makes use of D3.js [@2011-d3].

The declarative nature of the Vega-Lite visualization grammar [@2005-grammar, @2017-vega-lite], and its encoding in a
formal JSON schema, provide Altair with a number of benefits. First, much of the Altair Python code and tests are
generated from the Vega-Lite JSON schema, ensuring strict conformance with the Vega-Lite specification. Second, the JSON
data produced by Altair and consumed by Vega-Lite provides a natural serialization and file format for statistical
visualizations. This is leveraged by JupyterLab, which provides built-in rendering of these files. Third, the JSON data
provides a clean integration point for non-programming based visualization user-interfaces such as Voyager
[@2016-voyager,@2017-voyager2].

In addition to [static documentation](https://altair-viz.github.io/), Altair includes a set of Jupyter Notebooks with
examples and an interactive tutorial. These notebooks can be read by anyone with only a web-browser through
[binder](https://mybinder.org/).

-![Seattle Weather Interactive Visualization](seattle_weather_interactive.png)

The example above is an interactive Altair visualization of the weather in Seattle. The plot on the *left* shows the
initial state: a scatterplot showing the temperature and dominant weather type between January and December, and a bar
chart showing the counts grouped by weather type. The plot in the *middle* shows a brush that the user has drawn to
focus on the summers; which are dominantly sunny. In the last plot on the *right*, the user has clicked on the a bar
to filter the scatterplot.

These interactions are achieved through two selections: an interval selection on the scatterplot and a multi selection
on the bar chart. The selections drive filters in the other plot. The code for this and other examples is in the
[Altair gallery](https://altair-viz.github.io/gallery/).

# Acknowledgements

We thank the many contributors that created examples, wrote documentation, and reported bugs. You can find an up-to-date
list of contributors at https://github.com/altair-viz/altair/graphs/contributors.
Binary file added paper/seattle_weather_interactive.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.