Discussion Forum (LMS)
Late Day Policy
Spring '16 Projects
Assignment #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
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:
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
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++
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,
Create a plausible graph (or multiple graphs) of our social network,
using the data we gathered in Lecture 1 (the Google Drive link is on
LMS). Note that we have incomplete and possibly inconsistent data.
Not all links in the graph are bi-directional. Multiple different
graphs may correctly match this data!
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.
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.
Note: Contact the instructor if you don't have access to the homework