Textbooks

No textbooks are required for this class. However, if you would like additional reference material, we recommend the books below:

Visualization Programming Toolkits

A variety of useful toolkits have been designed to help support information visualization applications. Some include support for the full visualization pipeline from data to interactive graphics, while others focus only on a subset, typically graphics and interaction.

  • D3 – A JavaScript library for data-driven DOM manipulation, interaction and animation. Includes utilities for visualization techniques and SVG generation.
  • Vega – A declarative language for representing visualizations. Vega will parse a visualization specification to produce a JavaScript-based visualization, using either HTML Canvas or SVG rendering. Vega is particularly useful for creating programs that produce visualizations as output.
  • Vega-Lite – A high-level visualization grammar that compiles concise specifications to full Vega specifications.
  • Processing or p5.js – A popular Java-like graphics and interaction language and IDE. Processing has a strong user community with many examples. p5.js is a sister project for JavaScript.
  • Leaflet – A popular open-source mapping library
  • VTK – A scientific visualization library (C++ with wrappers for other languages)

Visualization Programming Toolkits

  • Tableau for Students – get a free Tableau license as a student
  • Tableau Public – a free version of Tableau which publishes to the web
  • Voyager and Polestar – web-based data exploration tools from UW’s Interactive Data Lab
  • Lyra – an interactive visualization design environment

Web Design and Development

In the second half of the class, we wil create Web-based visualizations Thus, it is important that you familiarize yourself with common Web tools and languages, such as HTML, CSS and JavaScript (JS). JS is especially important since we will be using D3, a data-driven JS library that will enable you to create advanced charts and graphs.

Free crash course by MIT students: web.lab

  • Formerly known as 6.148, web.lab is a web programming class and competition that takes place over IAP every January.
  • From their website: web.lab lays the foundations for understanding complicated web techologies using the fundamental building blocks of HTML, CSS, and JavaScript. In addition to learning how to build a website, students enrolled in web.lab may also take part in a competition to win prize money and glory. (You should check it out next year!)
  • Even though web.lab already took place this year, you can still access their content & videos here: https://weblab.mit.edu/schedule
  • We also share some of the most relevant lectures below (from YouTube).

HTML, CSS

JavaScript

Other JavaScript Frameworks (optional)

Vue.js and svelte have a shallower learning curve than React or Angular, and are likely more than sufficient for the assignments and final project in this class.

Web Development Tools

Other Tutorials & Tips

In addition to our workshops, these tutorials could be useful for your projects and future visualization work.

Git & GitHub

  • Git Tutorials – Git Official DocsVisual Git GuideA Successful Branching Model
  • GitHub – Use GitHub’s issue tracker, so you can refer to issues in your commit messages using # followed by issue no. – Working in a team? Use Github’s Pull Request so you can do code review. – Pull Request Workflows by Patrick Cozzi – Extras – Interactive Rebase – Need to merge multiple repos (e.g. using datavore in another project)? Use git subtree and DO NOT use git submodule.
  • GUI – Using git with command line is generally fast but using SourceTree is easier for reviewing your code before committing or committing a part of your changes and reduce chances that you will run a wrong command (such as push wrong branch to master). – Or you can use GitHub Desktop.
  • More Tips – Atomic Commit is a good practice. – Stash is useful when you have unfinished messy things and need to switch branches to work on something else.

Color Tools

Network Analysis Tools

  • Gephi – an interactive graph analysis application
  • NodeXL – a graph analysis plug-in for Excel
  • GUESS – a combined visual/scripting interface for graph analysis
  • Pajek – another popular network analysis tool
  • NetworkX – graph analysis library for Python
  • SNAP – graph analysis library for C++

Datasets

Further reading and resources

Visualization Blogs

#VisualizationTwitter and other Social Media Follows