CSCI 4964/6963 Interactive Visualization
Spring 2016

  Contact Information
  Office Hours   Announcements
  Discussion Forum (LMS)

  Learning Outcomes
  Course Grades

  Lecture notes


  Late Day Policy
  Electronic Submission

Final Project
   Spring '16 Projects

  On-lin Material
  Optional Books

Assignment #6: StreamGraphs

Note: Because this assignment was posted late and you may be loaded with pre-spring break work/exams... contact the instructor if you would like a deadline extension.

  • You may work on this assignment on your own or team up with a classmate.

    If you team up with another student that you did not know before class and haven't work with yet on a homework assignment for this course.... that's worth +3 points extra credit! (If this is the case, note it at the top of your writeup.)

  • First, decide on a simple, time-based dataset. For example:

    • time spent in a typical week on sleep/class/homework/eat/sports/tv

    • lines of code written during your time at RPI in different programming languages (python,c++,java,etc)

    • money spent over a typical month/year on tuition/apartment/food/travel/clothing/movies

    • something else?

    Note on dataset choice: If this assignment fits well with a dataset from an earlier assignment you are welcome to re-use that dataset (make sure that you spend a bit of time either expanding or improving the dataset or more time designing and implementing and revising the new visualization).

  • Next prepare the dataset. If the data already exists in an easily obtainable and sufficient detail and quantity, collect that data. Alternatively, you may write a simple program to generate synthetic data that matches your understanding of the data. Be sure to add some random noise so it's "interesting".

    To really show off the visualization, generate 2 different versions of the data. If it's a team project, this can be the data for the 2 team members. You may want to idealize or exaggerate the similarities and differences in the data for the 2 team members.

    If you've created synthetic data or exaggerated or expanded real data, note that in your writeup.

  • Now to make the visualizations!

    • First, plot or sketch the data using a "boring" bar or stacked bar graph over time (2 separate plots, 1 for each version of the data (e.g., the data for each team member). Use the same design/legend/scale/colors so that the differences between the datasets can be compared.

    • Then, create or sketch a streamgraph version of this data. Again, make 2 separate plots, 1 for each dataset/person, using the same design/colors so that the two streamgraphs can be compared to each other, and each streamgraph can be compared to the boring bar graph version of the same dataset.

      Streamgraphs can be created with D3. Here are some links with same code: or or search for additional references. Or you may use another toolkit to create your streamgraph.

    If you are having trouble creating or controlling the streamgraph plots, you may either draw a detailed diagram by hand with crayons/colored pencils/markers or with a digital painting program, or you may use software tools.

    If you do the drawing by hand, take care to approximately match the data values between the bar graph and stream graph. Follow the examples and algorithm description from our reading and chose a thoughtful baseline and ordering of the components of the data.

  • Write a figure caption that will fully explain your plots to a reader who hasn't seen streamgraphs before.

  • Analyze the effectiveness of the bar graph vs. streamgraph in showing off the differences and similarities in the two datasets. How well do these plots allow the viewer to make accurate conclusions about the data?