The Week in Vis 05 (Mon, Sep 28-Fri, Oct 2): Implementation

This is an unusual week. The topic, implementation, is unusual. While I’d like everyone to have a sense of the range of tools, and how you might select among them. But I don’t expect you to learn any specific tool (or more to the point, I don’t expect everyone to learn about the same tool).

This week is also special since we’ll have a guest lecture on Wednesday: Prof. Dominik Moritz from CMU (and Apple and Washington before that). In addition to being an expert on Vis implementation, he is a great speaker.

Readings 05: Implementation - are unusual because it has you pick some of the readings, and has things that are more of a “doing” than a reading.

Class Content

This week is a little weird: while we are discussing implementation, the goal isn’t to teach you to learn any one particular tool. Given the range of background and experiences in class, it would be impossible to teach any one tool in depth. Also, tools go in and out of fashion, and different ones are good for different things, and …

So, instead, the learning goal this week is to help you understand the range of tools (and kinds of tools) that are available so you can make informed choices.

How do we make visualizations (once we’ve designed them)? What are the types of tools we might use to make visualizations, and how do we choose?

As a computer scientist, a logical way to ask this is “what are the right abstractions for implementing visualizations?” But, even this doesn’t work well: in different situations, we may prefer different levels (or types) of abstractions. The right abstractions for implementing visualizations might depend on a range of factors (how it fits in with other aspects of the data analysis process, personal preference, how the visualization might be deployed, what resources you have to develop and maintain the visualization, …).

What I am going to try to do is to give you things to think about when choosing tools, and a survey of the different types of tools, with specific examples.

So, when I ask you to learn about (for example), D3, I am not expecting you to learn to be a D3 programmer (which requires a certain set of skill pre-requisites that many people in class do not have). I’d like you to have a sense of the category of tools D3 represents (a low level graphics toolkit), and why you might choose a tool like this.

What makes this hard is while there are lots of resources for learning D3 (or pick any tool), there are much fewer things I can find for learning about the tools. What are their rationales, strengths, key ideas, …

I will divide tools into some general categories:

  1. Creating things by hand (literally, with pen and paper, but also figuratively, using manual drawing tools like Illustrator)
  2. Standard Interactive Tools (Tableau, Excel, …)
  3. High-Level Visualization (data) toolkits - (Matplotlib, plotly, …)
  4. Low-Level Visualization (graphics) toolkits (D3, Processing, …)
  5. Declaritive Specifications (Vega-Lite, …)

For each category, I will use a specific example. This may be problematic, since the example I use may not be appropriate for you to learn about in depth. For example, I will use D3 as an example of a low-level toolkit. However, D3 is a JavaScript library (so you won’t use it unless you are a JavaScript programmer), and worse, it is so focused on JavaScript specific idioms that it is difficult for people who don’t “think JavaScript” to use.

That said, I want you to learn about D3 and Vega-Lite because they are useful in thinking about the right abstractions for creating visualizations. I’ll give you things to look at in the Readings 05: Implementation.