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 small collection of tools made by me, that you can use to visualize atomic orbitals in both 2D and 3D in different aspects.

Orbitals in Python A small collection of tools made by me, that you can use to visualize atomic orbitals in both 2D and 3D in different aspects, and o

Prakrisht Dahiya 1 Nov 25, 2021
This is a super simple visualization toolbox (script) for transformer attention visualization ✌

Trans_attention_vis This is a super simple visualization toolbox (script) for transformer attention visualization ✌ 1. How to prepare your attention m

Mingyu Wang 3 Jul 09, 2022
Process dataframe in a easily way.

Popanda Written by Shengxuan Wang at OSU. Used for processing dataframe, especially for machine learning. The name is from "Po" in the movie Kung Fu P

ShawnWang 1 Dec 24, 2021
Fast scatter density plots for Matplotlib

About Plotting millions of points can be slow. Real slow... 😴 So why not use density maps? ⚡ The mpl-scatter-density mini-package provides functional

Thomas Robitaille 473 Dec 12, 2022
A research of IT labor market based especially on hh.ru. Salaries, rate of technologies and etc.

hh_ru_research Проект реализован в учебных целях анализа рынка труда, в особенности по hh.ru Input data В качестве входных данных используются сериали

3 Sep 07, 2022
The plottify package is makes matplotlib plots more legible

plottify The plottify package is makes matplotlib plots more legible. It's a thin wrapper around matplotlib that automatically adjusts font sizes, sca

Andy Jones 97 Nov 04, 2022
Customizing Visual Styles in Plotly

Customizing Visual Styles in Plotly Code for a workshop originally developed for an Unconference session during the Outlier Conference hosted by Data

Data Design Dimension 9 Aug 03, 2022
Shaded 😎 quantile plots

shadyquant 😎 This python package allows you to quantile and plot lines where you have multiple samples, typically for visualizing uncertainty. Your d

Mehrad Ansari 13 Sep 29, 2022
Open-source demos hosted on Dash Gallery

Dash Sample Apps This repository hosts the code for over 100 open-source Dash apps written in Python or R. They can serve as a starting point for your

Plotly 2.7k Jan 07, 2023
Flexitext is a Python library that makes it easier to draw text with multiple styles in Matplotlib

Flexitext is a Python library that makes it easier to draw text with multiple styles in Matplotlib

Tomás Capretto 93 Dec 28, 2022
GDSHelpers is an open-source package for automatized pattern generation for nano-structuring.

GDSHelpers GDSHelpers in an open-source package for automatized pattern generation for nano-structuring. It allows exporting the pattern in the GDSII-

Helge Gehring 76 Dec 16, 2022
Visualization of hidden layer activations of small multilayer perceptrons (MLPs)

MLP Hidden Layer Activation Visualization To gain some intuition about the internal representation of simple multi-layer perceptrons (MLPs) I trained

Andreas Köpf 7 Dec 30, 2022
Type-safe YAML parser and validator.

StrictYAML StrictYAML is a type-safe YAML parser that parses and validates a restricted subset of the YAML specification. Priorities: Beautiful API Re

Colm O'Connor 1.2k Jan 04, 2023
🗾 Streamlit Component for rendering kepler.gl maps

streamlit-keplergl 🗾 Streamlit Component for rendering kepler.gl maps in a streamlit app. 🎈 Live Demo 🎈 Installation pip install streamlit-keplergl

Christoph Rieke 39 Dec 14, 2022
This project is an Algorithm Visualizer where a user can visualize algorithms like Bubble Sort, Merge Sort, Quick Sort, Selection Sort, Linear Search and Binary Search.

Algo_Visualizer This project is an Algorithm Visualizer where a user can visualize common algorithms like "Bubble Sort", "Merge Sort", "Quick Sort", "

Rahul 4 Feb 07, 2022
Sparkling Pandas

SparklingPandas SparklingPandas aims to make it easy to use the distributed computing power of PySpark to scale your data analysis with Pandas. Sparkl

366 Oct 27, 2022
Material for dataviz course at university of Bordeaux

Material for dataviz course at university of Bordeaux

Nicolas P. Rougier 50 Jul 17, 2022
Pydrawer: The Python package for visualizing curves and linear transformations in a super simple way

pydrawer 📐 The Python package for visualizing curves and linear transformations in a super simple way. ✏️ Installation Install pydrawer package with

Dylan Tintenfich 56 Dec 30, 2022
A data visualization curriculum of interactive notebooks.

A data visualization curriculum of interactive notebooks, using Vega-Lite and Altair. This repository contains a series of Python-based Jupyter notebooks.

UW Interactive Data Lab 1.2k Dec 30, 2022
Statistics and Visualization of acceptance rate, main keyword of CVPR 2021 accepted papers for the main Computer Vision conference (CVPR)

Statistics and Visualization of acceptance rate, main keyword of CVPR 2021 accepted papers for the main Computer Vision conference (CVPR)

Hoseong Lee 78 Aug 23, 2022