CSCI 4550/6550 Interactive Visualization
Spring 2018

Home
  Contact Information
  Office Hours

Syllabus
  Prerequistites
  Learning Outcomes
  Course Grades

Calendar
  Lecture notes

Submitty
  Discussion Forum

Readings

Homework
  Late Day Policy

Final Project
   Spring '18 Projects
   Spring '16 Projects

References
  On-lin Material
  Optional Books

Homework #2: Graph Visualization with Graphviz

The primary goal for this assignment is to familiarize yourself with a new visualization tool for drawing network-like graphs of linked nodes. Graphviz is an open source graph visualization software that runs on all platforms and is an excellent place to start.

Note: If you are already quite familiar with Graphviz, you are welcome to search for a different graph drawing tool that is "new to you". Possibilities include: Processing, D3 Data Driven Documents, or Gephi: The Open Graph Viz Platform. Do the same exercises below with the other tool and compare the results and overall usability of the tool to what you would expect to see from Graphviz.

  • Download the Graphviz software and explore the gallery of examples. Learn how to run these examples on your own machine and view the results.

    Edit by hand some of the input graph files -- see also the the DOT file format documentation. Experiment with different display options.

  • Using your favorite programming language, write code to generate and output a range of synthetic input files. Your program should be parameterized (allow you to modify) the number of nodes, the density/sparseness of edges, etc. Consider using randomness.

    Aim to create a variety of network connectivities including: a tree, a clique, a planar graph, a bipartite graph, disconnected components, etc. The size of your graphs should be "medium" sized (10-40 nodes?). The size should not be too large -- a "good, ~optimal" layout could be done by hand.

    Alternatively, you could write in C/C++ and directly compile with the Graphviz codebase.

  • Experiment with the visual options (layout, color, line style, label font, shapes, etc.). What options are most successful for the different graphs (tree, clique, planar graph, bipartite graph, disconnected, etc.)?

  • Create a plausible graph (or multiple graphs) of our social network, using the data we gathered in Lecture 1 (the Google Drive link is in the Submitty Discussion Forum). Note that we have incomplete and possibly inconsistent data. Not all links in the graph are bi-directional. Multiple different graphs will correctly match this data! How do you want to handle the different categories (when/where people met)?

    When planning & designing & revising your graph of this data, consider one (or more) of your original hypotheses for the social network in this class. Choose a graph style that facilitates testing & evaluation of this hypothesis. Make sure to clearly label your graph as appropriate. Are the context in which people met (roommates vs social environment vs classroom) clear? Can you labeled yourself or other individuals in the course?

  • Analyze the variety and quality of the results. Are the different graph properties appropriately highlighted in the resulting drawings? Note any weaknesses in the tool or degeneracies with more specific inputs. Could you have done better by hand? What adjustments/improvements do you believe are necessary to the graph drawing engine of this tool?

    Write a short review of the tool. How quick was the installation and learning to use the tool? What resources were most useful? What sorts of applications/datasets are most appropriate for this tool? What are the limitations of this tool? What are some suggestions/cautions to others who consider using this tool?

How to Submit

  • Collect ~5-10 interesting and effective images from your results.

  • Prepare your writeup as either:

    • plaintext with separate image files (.png or .jpg) with clear file names, or

    • .pdf with embedded images.

  • Collect the code you wrote to generate the different graphs in a subfolder named "code". Note: We won't try to run your code when grading, so don't include any 3rd party libraries you may have used or the executable. The code should have some organization and basic comments, but you do not need to prepare detailed documentation.

  • Follow the homework server submission instructions to zip up these files and upload your assignment to the homework submission server.

  • Share one image from your assignment on the Submitty Forum. It could be your most impressive and successful social network visualization, a graph visualization result that surprised you, or a spectacular blooper from your homework efforts. Make sure your forum post includes a well-written and descriptive caption to go along with your image.

Note: Contact the instructor ASAP if you don't have access to Submitty.