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
Create Badges with stats of Scratch User, Project and Studio. Use those badges in Github readmes, etc.

Scratch-Stats-Badge Create customized Badges with stats of Scratch User, Studio or Project. Use those badges in Github readmes, etc. Examples Document

Siddhesh Chavan 5 Aug 28, 2022
The Spectral Diagram (SD) is a new tool for the comparison of time series in the frequency domain

The Spectral Diagram (SD) is a new tool for the comparison of time series in the frequency domain. The SD provides a novel way to display the coherence function, power, amplitude, phase, and skill sc

Mabel 3 Oct 10, 2022
PanGraphViewer -- show panenome graph in an easy way

PanGraphViewer -- show panenome graph in an easy way Table of Contents Versions and dependences Desktop-based panGraphViewer Library installation for

16 Dec 17, 2022
A grammar of graphics for Python

plotnine Latest Release License DOI Build Status Coverage Documentation plotnine is an implementation of a grammar of graphics in Python, it is based

Hassan Kibirige 3.3k Jan 01, 2023
A flexible tool for creating, organizing, and sharing visualizations of live, rich data. Supports Torch and Numpy.

Visdom A flexible tool for creating, organizing, and sharing visualizations of live, rich data. Supports Python. Overview Concepts Setup Usage API To

FOSSASIA 9.4k Jan 07, 2023
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 30, 2022
AB-test-analyzer - Python class to perform AB test analysis

AB-test-analyzer Python class to perform AB test analysis Overview This repo con

13 Jul 16, 2022
This project is created to visualize the system statistics such as memory usage, CPU usage, memory accessible by process and much more using Kibana Dashboard with Elasticsearch.

System Stats Visualizer This project is created to visualize the system statistics such as memory usage, CPU usage, memory accessible by process and m

Vishal Teotia 5 Feb 06, 2022
Python library that makes it easy for data scientists to create charts.

Chartify Chartify is a Python library that makes it easy for data scientists to create charts. Why use Chartify? Consistent input data format: Spend l

Spotify 3.2k Jan 04, 2023
Visualization ideas for data science

Nuance I use Nuance to curate varied visualization thoughts during my data scientist career. It is not yet a package but a list of small ideas. Welcom

Li Jiangchun 16 Nov 03, 2022
Scientific Visualization: Python + Matplotlib

An open access book on scientific visualization using python and matplotlib

Nicolas P. Rougier 8.6k Dec 31, 2022
哔咔漫画window客户端,界面使用PySide2,已实现分类、搜索、收藏夹、下载、在线观看、waifu2x等功能。

picacomic-windows 哔咔漫画window客户端,界面使用PySide2,已实现分类、搜索、收藏夹、下载、在线观看等功能。 功能介绍 登陆分流,还原安卓端的三个分流入口 分类,搜索,排行,收藏夹使用同一的逻辑,滚轮下滑自动加载下一页,双击打开 漫画详情,章节列表和评论列表 下载功能,目

1.8k Dec 31, 2022
A small script written in Python3 that generates a visual representation of the Mandelbrot set.

Mandelbrot Set Generator A small script written in Python3 that generates a visual representation of the Mandelbrot set. Abstract The colors in the ou

1 Dec 28, 2021
Some examples with MatPlotLib library in Python

MatPlotLib Example Some examples with MatPlotLib library in Python Point: Run files only in project's directory About me Full name: Matin Ardestani Ag

Matin Ardestani 4 Mar 29, 2022
Simple python implementation with matplotlib to manually fit MIST isochrones to Gaia DR2 color-magnitude diagrams

Simple python implementation with matplotlib to manually fit MIST isochrones to Gaia DR2 color-magnitude diagrams

Karl Jaehnig 7 Oct 22, 2022
Render Jupyter notebook in the terminal

jut - JUpyter notebook Terminal viewer. The command line tool view the IPython/Jupyter notebook in the terminal. Install pip install jut Usage $jut --

Kracekumar 169 Dec 27, 2022
Schema validation for Xarray objects

xarray-schema Schema validation for Xarray installation This package is in the early stages of development. Install it from source: pip install git+gi

carbonplan 22 Oct 31, 2022
Python library that makes it easy for data scientists to create charts.

Chartify Chartify is a Python library that makes it easy for data scientists to create charts. Why use Chartify? Consistent input data format: Spend l

Spotify 3.2k Jan 01, 2023
Info for The Great DataTas plot-a-thon

The Great DataTas plot-a-thon Datatas is organising a Data Visualisation competition: The Great DataTas plot-a-thon We will be using Tidy Tuesday data

2 Nov 21, 2021
Visual Python is a GUI-based Python code generator, developed on the Jupyter Notebook environment as an extension.

Visual Python is a GUI-based Python code generator, developed on the Jupyter Notebook environment as an extension.

Visual Python 564 Jan 03, 2023