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 set of three functions, useful in geographical calculations of different sorts

GreatCircle A set of three functions, useful in geographical calculations of different sorts. Available for PHP, Python, Javascript and Ruby. Live dem

72 Sep 30, 2022
又一个云探针

ServerStatus-Murasame 感谢ServerStatus-Hotaru,又一个云探针诞生了(大雾 本项目在ServerStatus-Hotaru的基础上使用fastapi重构了服务端,部分修改了客户端与前端 项目还在非常原始的阶段,可能存在严重的问题 演示站:https://stat

6 Oct 19, 2021
Blender addon that creates a temporary window of any type from the 3D View.

CreateTempWindow2.8 Blender addon that creates a temporary window of any type from the 3D View. Features Can the following window types: 3D View Graph

3 Nov 27, 2022
Declarative statistical visualization library for Python

Altair http://altair-viz.github.io Altair is a declarative statistical visualization library for Python. With Altair, you can spend more time understa

Altair 8k Jan 05, 2023
Create artistic visualisations with your exercise data (Python version)

strava_py Create artistic visualisations with your exercise data (Python version). This is a port of the R strava package to Python. Examples Facets A

Marcus Volz 53 Dec 28, 2022
Geospatial Data Visualization using PyGMT

Example script to visualize topographic data, earthquake data, and tomographic data on a map

Utpal Kumar 2 Jul 30, 2022
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
The Metabolomics Integrator (MINT) is a post-processing tool for liquid chromatography-mass spectrometry (LCMS) based metabolomics.

MINT (Metabolomics Integrator) The Metabolomics Integrator (MINT) is a post-processing tool for liquid chromatography-mass spectrometry (LCMS) based m

Sören Wacker 0 May 04, 2022
An intuitive library to add plotting functionality to scikit-learn objects.

Welcome to Scikit-plot Single line functions for detailed visualizations The quickest and easiest way to go from analysis... ...to this. Scikit-plot i

Reiichiro Nakano 2.3k Dec 31, 2022
simple tool to paint axis x and y

simple tool to paint axis x and y

G705 1 Oct 21, 2021
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
阴阳师后台全平台(使用网易 MuMu 模拟器)辅助。支持御魂,觉醒,御灵,结界突破,秘闻副本,地域鬼王。

阴阳师后台全平台辅助 Python 版本:Python 3.8.3 模拟器:网易 MuMu | 雷电模拟器 模拟器分辨率:1024*576 显卡渲染模式:兼容(OpenGL) 兼容 Windows 系统和 MacOS 系统 思路: 利用 adb 截图后,使用 opencv 找图找色,模拟点击。使用

简讯 27 Jul 09, 2022
Voilà, install macOS on ANY Computer! This is really and magic easiest way!

OSX-PROXMOX - Run macOS on ANY Computer - AMD & Intel Install Proxmox VE v7.02 - Next, Next & Finish (NNF). Open Proxmox Web Console - Datacenter N

Gabriel Luchina 654 Jan 09, 2023
Python package for the analysis and visualisation of finite-difference fields.

discretisedfield Marijan Beg1,2, Martin Lang2, Samuel Holt3, Ryan A. Pepper4, Hans Fangohr2,5,6 1 Department of Earth Science and Engineering, Imperia

ubermag 12 Dec 14, 2022
Python package that generates hardware pinout diagrams as SVG images

PinOut A Python package that generates hardware pinout diagrams as SVG images. The package is designed to be quite flexible and works well for general

336 Dec 20, 2022
Make visual music sheets for thatskygame (graphical representations of the Sky keyboard)

sky-python-music-sheet-maker This program lets you make visual music sheets for Sky: Children of the Light. It will ask you a few questions, and does

21 Aug 26, 2022
Python support for Godot 🐍🐍🐍

Godot Python, because you want Python on Godot ! The goal of this project is to provide Python language support as a scripting module for the Godot ga

Emmanuel Leblond 1.4k Jan 04, 2023
Productivity Tools for Plotly + Pandas

Cufflinks This library binds the power of plotly with the flexibility of pandas for easy plotting. This library is available on https://github.com/san

Jorge Santos 2.7k Dec 30, 2022
Visualizations for machine learning datasets

Introduction The facets project contains two visualizations for understanding and analyzing machine learning datasets: Facets Overview and Facets Dive

PAIR code 7.1k Jan 07, 2023
patchwork for matplotlib

patchworklib patchwork for matplotlib test code Preparation of example plots import seaborn as sns import numpy as np import pandas as pd #Bri

Mori Hideto 185 Jan 06, 2023