A data visualization curriculum of interactive notebooks.

Overview

Data Visualization Curriculum

A data visualization curriculum of interactive notebooks, using Vega-Lite and Altair. This repository contains a series of Python-based Jupyter notebooks. The notebooks are online in a Jupyter book, runnable locally or online on Colab, Nextjournal, or Deepnote. A corresponding set of JavaScript notebooks are available online on Observable.

Curriculum

Table of Contents

  1. Introduction to Vega-Lite / Altair
    Jupyter Book | Jupyter | Colab | Nextjournal | Observable | Deepnote

  2. Data Types, Graphical Marks, and Visual Encoding Channels
    Jupyter Book | Jupyter | Colab | Nextjournal | Observable | Deepnote

  3. Data Transformation
    Jupyter Book | Jupyter | Colab | Nextjournal | Observable | Deepnote

  4. Scales, Axes, and Legends
    Jupyter Book | Jupyter | Colab | Nextjournal | Observable | Deepnote

  5. Multi-View Composition
    Jupyter Book | Jupyter | Colab | Nextjournal | Observable | Deepnote

  6. Interaction
    Jupyter Book | Jupyter | Colab | Nextjournal | Observable | Deepnote

  7. Cartographic Visualization
    Jupyter Book | Jupyter | Colab | Nextjournal | Observable | Deepnote

Support

Getting Started

The visualization curriculum can be used either online or on your local computer.

Online

Local Installation

  1. Install Altair and a notebook environment. The most recent versions of these notebooks use Altair version 4.
  2. Download the notebooks from the releases page. Typically you will want to use the most recent release. (If you wish to use notebooks for Altair version 3, download the Altair v3.2 release.)
  3. Open the notebooks in your local notebook environment. For example, if you have JupyterLab installed (v1.0 or higher is required), run jupyter lab within the directory containing the notebooks.

Depending on your programming environment (and whether or not you have a live internet connection), you may want to specify a particular renderer for Altair.

Credits

Developed at the University of Washington by Jeffrey Heer, Dominik Moritz, Jake VanderPlas, and Brock Craft. Thanks to the UW Interactive Data Lab and Arvind Satyanarayan for their valuable input and feedback! Thanks also to the students of UW CSE512 Spring 2019, the first group to use these notebooks within an integrated course curriculum.

Comments
  • Build a Jupyter book

    Build a Jupyter book

    @domoritz Here is the Jupyter Book PR. I moved the notebooks to the doc folder and added CI to rebuild the book upon changes to this folder. You can have a peak at the rendered book from my branch here. I used the logo from your github organization for the book and a slightly modified version of the readme for the landing page (but please edit if this is not appropriate).

    close #13

    opened by joelostblom 9
  • Add Nextjournal notebooks

    Add Nextjournal notebooks

    Hi, I took the freedom to add those great Notebooks to Nextjournal! It has a nice way to publish notebooks and remembers all installed software, so all notebooks "just run" ;) If you already have an account, I can also transfer the ownership of those notebooks to you!

    Best, Simon

    opened by SimonDanisch 8
  • Chart sizing wrong in Nextjournal

    Chart sizing wrong in Nextjournal

    For example, see: https://github.nextjournal.com/uwdata/visualization-curriculum/blob/master/altair_interaction.ipynb

    Some of the chart views in the notebook are not properly sized (widgets are below the fold, or even whole charts are not properly captured). This may be a Nextjournal issue; don't know if there is something we can do on our end to fix this.

    @domoritz any ideas? I haven't used Nextjournal before and I think you merged these additions?

    opened by jheer 7
  • Permission to remix the material from this repo into our univeristy course

    Permission to remix the material from this repo into our univeristy course

    Hello! We would like to remix much of the material from this repo into one of our university courses (with accreditation of course) and I just wanted to double check if this is OK. The remixing will mostly entail reordering to fit with our curriculum and extending the material where we see fit. I saw that the license is BSD-3 for the repo, but just wanted to double check before going ahead with this.

    opened by joelostblom 4
  • replace rangeStep with `chart.properties(width={

    replace rangeStep with `chart.properties(width={"step": rangeStep})`

    Per the latest release notes

    image

    The current use of rangeStep is causing an error for people trying to run this notebook with the latest version of Altair. I tried to make the most minimal change possible to the notebook so that the diffs are human-readable. 🙇 Thank you so much for this very useful tutorial.

    cc/: @dansbecker

    opened by hamelsmu 4
  • [Altair-Intro] `alt.renderers.enable('jupyterlab')` is not a part of renderer discussion

    [Altair-Intro] `alt.renderers.enable('jupyterlab')` is not a part of renderer discussion

    In https://github.com/uwdata/visualization-curriculum/blob/master/altair_introduction.ipynb, there is a section about renderers on the top of the page:

    image

    Yet, alt.renderers.enable('jupyterlab') call is actually happening when we call chart the first time.

    image

    opened by kanitw 3
  • Width 'step' does not work

    Width 'step' does not work

    Great tutorial, very clear and helpful. Thanks!

    https://github.com/uwdata/visualization-curriculum/blob/master/altair_marks_encoding.ipynb

    This code is used a number of times, but does not seem to be valid.

    .properties(
        width={"step": 50} # adjust the step parameter
    )
    

    A numerical value does work: e.g. width=100 I could not find from the documentation how to apply the step

    opened by Juan-132 2
  • Show uwdata: Open Source Blogging Platform w/ GitHub Pages & Native Support For Jupyter and Altair

    Show uwdata: Open Source Blogging Platform w/ GitHub Pages & Native Support For Jupyter and Altair

    @jheer I really loved these tutorials on Altair, as they demystified Altair for me.

    I'm working with Jeremy Howard (@jph00) on fastpages

    The reason we created this is we wanted a blogging system that was easy to use but also open source, and where people could own their data. Plus, we wanted to support cool features like interactive charts & graphs in Altair! A summary of features is below, which can also be viewed on the README:

    image

    Sharing this incase it is interesting for your students, especially to share their cool visualization projects! Thank you 🙇

    opened by hamelsmu 2
  • Broken link for timeunits

    Broken link for timeunits

    The "complete list of time units" link in the "Time Units" section of altair_data_transformation.ipynb is broken.

    Should probably be replaced with: https://altair-viz.github.io/user_guide/transform/timeunit.html#user-guide-timeunit-transform

    opened by ltirrell 1
  • Language guidelines

    Language guidelines

    The University of Washington works hard to foster an inclusive and welcoming culture for everyone in the campus community.

    Unfortunately, looking over your GitHub repositories, I have identified language that can be considered offensive due to its racist origins. Specifically the branch names, but I imagine if I looked at the code itself, I would find more.

    Can you let me know when you’ll be adjusting the settings to be a inclusive product/service and follow University of Washington language guidelines?

    opened by ghost 1
  • Add Nextjournal option, take two

    Add Nextjournal option, take two

    Hi @domoritz! This adds the option to view & run these notebooks in Nextjournal. We made sure all notebooks are runnable as-is now. This supersedes #6.

    opened by mk 1
  • [Multi-View] Consider suggesting people to color axis title for dual axis chart

    [Multi-View] Consider suggesting people to color axis title for dual axis chart

    like in https://vega.github.io/vega-lite/examples/layer_dual_axis.html

    image

    The current example in the notebook doesn't make it clear which variable is which mark

    image

    (It's ok for people who follow the tutorial as they created it themselves, but once they copy this example to create charts and share with other audience, it would be confusing.)

    opened by kanitw 3
Releases(v1.1)
Owner
UW Interactive Data Lab
Visualization + Analysis
UW Interactive Data Lab
a python function to plot a geopandas dataframe

Pretty GeoDataFrame A minimum python function (~60 lines) to draw pretty geodataframe. Based on matplotlib, shapely, descartes. Installation just use

haoming 27 Dec 05, 2022
A simple, fast, extensible python library for data validation.

Validr A simple, fast, extensible python library for data validation. Simple and readable schema 10X faster than jsonschema, 40X faster than schematic

kk 209 Sep 19, 2022
HW 02 for CS40 - matplotlib practice

HW 02 for CS40 - matplotlib practice project instructions https://github.com/mikeizbicki/cmc-csci040/tree/2021fall/hw_02 Drake Lyric Analysis Bar Char

13 Oct 27, 2021
Pyan3 - Offline call graph generator for Python 3

Pyan takes one or more Python source files, performs a (rather superficial) static analysis, and constructs a directed graph of the objects in the combined source, and how they define or use each oth

Juha Jeronen 235 Jan 02, 2023
Script to create an animated data visualisation for categorical timeseries data - GIF choropleth map with annotations.

choropleth_ldn Simple script to create a chloropleth map of London with categorical timeseries data. The script in main.py creates a gif of the most f

1 Oct 07, 2021
Python module for drawing and rendering beautiful atoms and molecules using Blender.

Batoms is a Python package for editing and rendering atoms and molecules objects using blender. A Python interface that allows for automating workflows.

Xing Wang 1 Jul 06, 2022
Schema validation just got Pythonic

Schema validation just got Pythonic schema is a library for validating Python data structures, such as those obtained from config-files, forms, extern

Vladimir Keleshev 2.7k Jan 06, 2023
Generate the report for OCULTest.

Sample report generated in this function Usage example from utils.gen_report import generate_report if __name__ == '__main__': # def generate_rep

Philip Guo 1 Mar 10, 2022
Some useful extensions for Matplotlib.

mplx Some useful extensions for Matplotlib. Contour plots for functions with discontinuities plt.contour mplx.contour(max_jump=1.0) Matplotlib has pro

Nico Schlömer 519 Dec 30, 2022
nvitop, an interactive NVIDIA-GPU process viewer, the one-stop solution for GPU process management

An interactive NVIDIA-GPU process viewer, the one-stop solution for GPU process management.

Xuehai Pan 1.3k Jan 02, 2023
A collection of 100 Deep Learning images and visualizations

A collection of Deep Learning images and visualizations. The project has been developed by the AI Summer team and currently contains almost 100 images.

AI Summer 65 Sep 12, 2022
Plotting library for IPython/Jupyter notebooks

bqplot 2-D plotting library for Project Jupyter Introduction bqplot is a 2-D visualization system for Jupyter, based on the constructs of the Grammar

3.4k Dec 29, 2022
Analytical Web Apps for Python, R, Julia, and Jupyter. No JavaScript Required.

Dash Dash is the most downloaded, trusted Python framework for building ML & data science web apps. Built on top of Plotly.js, React and Flask, Dash t

Plotly 17.9k Dec 31, 2022
MPL Plotter is a Matplotlib based Python plotting library built with the goal of delivering publication-quality plots concisely.

MPL Plotter is a Matplotlib based Python plotting library built with the goal of delivering publication-quality plots concisely.

Antonio López Rivera 162 Nov 11, 2022
Apache Superset is a Data Visualization and Data Exploration Platform

Apache Superset is a Data Visualization and Data Exploration Platform

The Apache Software Foundation 49.9k Jan 02, 2023
Statistical data visualization using matplotlib

seaborn: statistical data visualization Seaborn is a Python visualization library based on matplotlib. It provides a high-level interface for drawing

Michael Waskom 10.2k Dec 30, 2022
JSNAPY example: Validate NAT policies

JSNAPY example: Validate NAT policies Overview This example will show how to use JSNAPy to make sure the expected NAT policy matches are taking place.

Calvin Remsburg 1 Jan 07, 2022
This is a sorting visualizer made with Tkinter.

Sorting-Visualizer This is a sorting visualizer made with Tkinter. Make sure you've installed tkinter in your system to use this visualizer pip instal

Vishal Choubey 7 Jul 06, 2022
DALLE-tools provided useful dataset utilities to improve you workflow with WebDatasets.

DALLE tools DALLE-tools is a github repository with useful tools to categorize, annotate or check the sanity of your datasets. Installation Just clone

11 Dec 25, 2022
Data visualization electromagnetic spectrum

Datenvisualisierung-Elektromagnetischen-Spektrum Anhand des Moduls matplotlib sollen die Daten des elektromagnetischen Spektrums dargestellt werden. D

Pulsar 1 Sep 01, 2022