Design for Understanding
- Group size: Teams of 4 (likely working pairs)
- Demo Day: 3/30 in class
- Design Doc Due: 4/2, 11:59 PM
Overview
Mapping data to visual features is a powerful method for communicating information by leveraging the rapid perceptual pathways in our brain. In this design sprint, you will use visual methods to communicate data - but for different end goals. Your job is to use two different lenses to approach the same dataset:
- Clear communication and reasoning: In this framing, you can assume that you have the user’s attention and that they do not need training in traditional charts. Use your knowledge of perception + data representation to construct a series of graphs that give an in-depth, unbiased, clear portrait of your data.
- Persuasive communication and storytelling: In this framing, your goal is to represent the data (visually, through audio, through interaction) in the most compelling way possible. What will have the most long-lasting impact on users? What will they remember?
Since you’ll be working in teams of four (4) for this project, I recommend that you split your team into pairs. However, depending on your design, you may choose to allocate your resources in the way you see best.
Choose a Dataset
Before you begin, choose a dataset. While you may use any dataset, be aware that cleaning the datasets into a usable format can be a major headache. You can use any dataset that you find online. Here are a few good starting points.
- CORGIS (The Collection of Really Great, Interesting, Situated Datasets): cleaned, well-organized datasets that should be very simple to load into your program.
- Datasets underlying FiveThirtyEight stories: Mostly cleaned, but may come in different formats.
- Data is Plural newsletter: fascinating datasets, but may not be cleaned/curated
Your Technology
Both are valuable perspectives, and there are tradeoffs between the two. To help match your tools with your objectives, we’ll use two.
-
Vega or Vega-Lite: These are both templating tools that sit on top of the very popular d3js visualization library. While they are less expressive than d3js, they will allow you to rapidly (hopefully) construct data visualizations. Vega will allow you to be a little more creative and integrate interaction (recommended).
-
P5js: p5js is an expressive, accessible javascript library that enables pixel-level control. While it is more difficult to construct basic charts than vega or vega-lite, it empowers more creative interpretations of data that are either more abstract or that incorporate sound.
Your Two Portraits
-
For Clear Communication: You should construct a series of graphs that tell the story of the data. The properties of the data should align with your chart choice. Together, your charts (AT LEAST 3) should explore the data from different perspectives. For example, Airline on-time performance. While you may not have the degree of interaction of this demo, note how it gives different perspectives of the same data.
-
For Persuasion: There are very few guidelines here. I would encourage you to be creative and optimize for impact. For example, here is a visual/audio interpretation of data that I created (note: you need audio): 15 Years of Mass Shootings in America.
Your Design Process
Before you got to this class, you should have read about the five design-sheet (FdS) approach for information visualization. You should walk through all five stages of FdS. Make sure to get feedback from other students in the class as part of your design process!
Over the course of the term, I am going to give fewer and fewer detailed instructions about how to run your design process. This is intentional! As we become more familiar with it, I expect you to be able to apply it yourself to any new technological domain
Build it.
Just build it. Note that you may run into tensions between your imagined visualization and the one that you have time to create. That’s okay! Technical tradeoffs are a reality that any designer must encounter. Adjust your design (as needed), and be sure to discuss these tradeoffs in your design document.
Deliverables
- As always: Your design reflection as a Medium blog post. Like the last assignment, you do not need a demo video
- Be sure to reflect on the contrast between the two ways you have chosen to communicate your data. There are certainly tradeoffs between the two.
- Both of your designs should be hosted on WPI’s servers with publicly accessible links. These links should be clearly included into your design reflection.
Some Tech Tips
Over the past summer, I had a colleague complete each of these assignments to help me determine where students might encounter problems. From this project on, I will include her notes on the tech you’ll be using.
Getting Started: Creating a website
If you’ve never hosted a website on WPI’s Linux servers before, start by following the steps here.
Tips for Getting Data into p5js
Getting started
- Download the complete p5.js library and unzip the file.
- Go through this ~2 minute tutorial. It’s extremely helpful and even if you already know what you’re doing you get to make a pretty fun demo and you’ll need the documents later on in the assignment.
Creating a data table
- Once you’ve chosen a dataset to work with, download the data as a
.csv
file and save it in your working directory.- To make life easier, use the empty-example folder from the tutorial as your working directory and work out of the index.html and sketch.js files within it.
- Delete the code in your sketch.js. Replace it with the the code found here.
- This just makes it so we don’t have to create an entirely new file and reconnect all the documents.
- In the third line of actual code (not including comments) replace
"assets/mammals.csv"
with the file path to the .csv file you’re using. - Your third line of code should now look something like this:table = loadTable("FILENAME.csv", "csv", "header")
- Look over the sketch.js example I provided. It’s marked it up with comprehensive explanations and places you need to change the code around. Make sure you read over it before proceeding to the next step. - You can try running it with your index.html file if you want to see it in action.
- Now that you’ve read how, in your sketch.js code change
"name"
in the lineprint(table.getColumn("name"));
to the column you’re trying to get (if you haven’t already).
Viewing your table
- Run your index.html document on a web browser
- Open up developer tools - This article shows how to open the developer toolbox on any browser
- Click on the “javascript console” tab in your developer toolbox (might just be “console” on some browsers).
- You should now be able to see the “printed” statements from your sketch.js document.
Build your story
The options here are too diverse to describe in a single point. However, if you want to start with existing code, see my 15 Years of Mass Shootings in America github repository.
Tips for Vega Lite (or Vega)
Introducing Vega-Lite:
- Open up Vega-Lite’s online editor to work out of
- Look through the charts and graphs we’re given (found in the dropdown menu) to see the different possibilities for visualizing data with Vega-Lite.
- Go through their first two tutorials titled “The Data” and “Encoding Data with Marks”. Code along with the tutorial in order to get a better feel for the library. Some helpful tips:
- Entire code should be wrapped in
{}
. - Almost every value you enter must be wrapped in
""
– excludes punctuation and numerical values in thedata: values
field. - The
encoding
field is where you’ll enter the bulk of the information about your dataset. Most importantly the x- and y-axis data go here. Learn about the different data types here. - Create a legend using this documentation.
- Entire code should be wrapped in
- When you’re done going through the tutorial, use the data found in this csv file to create a chart or graph.
- To use data from an online link, replace
"data": { "values": [..] },
with
"data": { "url": "URL", "format": {"type": "TYPE"} },
whereTYPE
is the type of file used (csv in our case). - When you’re entering the x- and y-axis “fields”, instead of typing
a
andb
you’ll type in the names of the columns you’d like to display the data for. In this example there are only two columns so your x field would be “AAPL_x” and your y-field would be “AAPL_y”.
- To use data from an online link, replace
- Once you finish playing around with your chart or feel like you understand how the code works, move on to the next task.
Publishing your Visualization:
- Once you’re diagram is finished open the
index.html
in thepublic_html
folder that you created earlier in a text editor. - Delete anything that’s already in the file and use the code given here (if your computer isn’t already there, go to the section titled “Publish your Visualization Online”) to guide you in adding your chart or graph to your webpage.
- Don’t forget to include
var vlSpec = {
before entering your diagram code as well as the optional code for vega-lite that we needvar opt = {"mode": "vega-lite"};
towards the bottom.
- Don’t forget to include
- Once completed, you should be able to see your diagram