Awesome
<p align="center"> <img src="logo/logo.png" width="200"> </p>Falcon: Interactive Visual Analysis for Big Data
Crossfilter millions of records without latencies. This project is work in progress and not documented yet. Please get in touch if you have questions.
The largest experiments we have done so far is 10M flights in the browser, 33M flights in the browser with DuckDB, and ~180M flights or ~1.7B stars when connected to OmniSciDB (formerly known as MapD).
We have written a paper about the research behind Falcon. Please cite us if you use Falcon in a publication.
@inproceedings{moritz2019falcon,
doi = {10.1145/3290605},
year = {2019},
publisher = {{ACM} Press},
author = {Dominik Moritz and Bill Howe and Jeffrey Heer},
title = {Falcon: Balancing Interactive Latency and Resolution Sensitivity for Scalable Linked Visualizations},
booktitle = {Proceedings of the 2019 {CHI} Conference on Human Factors in Computing Systems - {CHI} {\textquotesingle}19}
}
Demos
- 1M flights in the browser: https://vega.github.io/falcon/flights/
- 10M flights in the browser with DuckDB-WASM: https://vega.github.io/falcon/flights-duckdb/
- 7M flights in OmniSci Core: https://vega.github.io/falcon/flights-mapd/
- 500k weather records: https://vega.github.io/falcon/weather/
Usage
Install with yarn add falcon-vis
. You can use two query engines. First ArrowDB
reading data from Apache Arrow. This engine works completely in the browser and scales up to ten million rows. Second, MapDDB
, which connects to OmniSci Core. The indexes are created as ndarrays. Check out the examples to see how to set up an app with your own data. More documentation will follow.
Features
Zoom
You can zoom histograms. Falcon automatically re-bins the data.
<img src="images/zoom.gif" width="500">Show and hide unfiltered data
The original counts without filters, can be displayed behind the filtered counts to provide context. Hiding the unfiltered data shows the relative distribution of the data.
With unfiltered data.
<img src="images/unfiltered.png" width="500">Without unfiltered data.
<img src="images/no_unfiltered.png" width="500">Circles or Color Heatmap
Heatmap with circles (default). Can show the data without filters.
<img src="images/circles.png" width="460">Heatmap with colored cells.
<img src="images/color.png" width="460">Vertical bar, horizontal bar, or text for counts
Horizontal bar.
<img src="images/hbar.png" width="300">Vertical bar.
<img src="images/vbar.png" height="300">Text only.
<img src="images/text.png" width="300">Timeline visualization
You can visualize the timeline of brush interactions in Falcon.
<img src="images/timeline.png" width="400">Falcon with 1.7 Billion Stars from the GAIA Dataset
The GAIA spacecraft measured the positions and distances of stars with unprecedented precision. It collected about 1.7 billion objects, mainly stars, but also planets, comets, asteroids and quasars among others. Below, we show the dataset loaded in Falcon (with OmniSci Core). There is also a video of me interacting with the dataset through Falcon.
<img src="images/gaia.png">Developers
Install the dependencies with yarn
. Then run yarn start
to start the flight demo with in memory data. Have a look at the other script
commands in package.json
.
Experiments
First version that turned out to be too complicated is at https://github.com/vega/falcon/tree/complex and the client-server version is at https://github.com/vega/falcon/tree/client-server.