Design for Understanding

  • Group size: Teams of 3-4
  • Design Sprint Starts: Tuesday, February 20, in class.
  • Design Sprint Ends (+): Tuesday, March 5: in class; design document end of day.


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.

Your Technology

Both logical reasoning and persuasive storytelling are valuable perspectives for communicating information, and there are tradeoffs. To help match your tools with your objectives, here are some possible tools.

  • d3js: Probably the most popular data visualization library that is both powerful and flexible. However, it also has a steep learning curve - especially for people who are not comfortable with javascript and web programming. Given the very short timelines of our projects, I would only go this route if you have someone very skilled in web development on your team.

  • Vega or Vega-Lite: These are both templating tools that sit on top of the 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).

  • Chart.js: a javascript library that supports easy creation of basic chart types. This will limit your flexibility, but if you want to use basic charts, it’s a quick way to get rolling.

  • 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.

  • Tableau Public: heavily used in business intelligence, this is the free version that can connect to a spreadsheet/file to create data visualizations for the web.

Your Two Portraits

  • For Analysis: You should construct a series of graphs that clearly and effectively communicate 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. Your design here should include AT LEAST 3 charts OR utilize more sophisiticated persuasion techniques (e.g., storytelling techniques). For example, here is a visual/audio interpretation of data created by Evan Peck (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 semester, 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.


  • As always: Your group's design reflection as a Medium blog post. Be sure to discuss both portraits, including the full project context as well as the scope of your specific contributions. You WILL need a demo video that captures the interactivity in the visualizations. 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 the web at publicly accessible links. That may be a standalone site that hosts your interactive visualization, or an Observable notebook link for example. Essentially, we should be able to click around and interact with your designs. These links should be clearly included into your design reflection.
  • Post the link of each Medium post along with the names of your group members on our Slack channel for #group_design_projects and one group member should submit the link on Canvas.

  • Grading:
    • Grading will be based on the design rubric.
    • Be sure to complete the peer feedback forms linked at the end of the design document guide, which will be a large part of your grade.

Some Tech Tips

Getting Started: Creating a website

If you’ve never hosted a website before, I recommend hosting on Heroku. Heroku has good tutorials and documentation, but you can use any hosting service you'd like.

Tips for Vega-Lite (or Vega)

Introducing Vega-Lite:

  1. Open up Vega-Lite’s online editor to work out of.
  2. Look through the charts and graphs we’re given (found in the Examples menu) to see the different possibilities for visualizing data with Vega-Lite.
  3. 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:
    1. Entire code should be wrapped in {}.
    2. Almost every value you enter must be wrapped in ""– excludes punctuation and numerical values in the data: values field.
    3. 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.
    4. Create a legend using this documentation.
  4. 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"} }, where TYPE is the type of file used (csv in our case).
    • When you’re entering the x- and y-axis “fields”, instead of typing a and b 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”.
  5. 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:

  1. Once your diagram is finished, open the index.html in the public_html folder that you created earlier in a text editor.
  2. 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 need var opt = {"mode": "vega-lite"}; towards the bottom.
  3. Once completed, you should be able to see your diagram