CS 251: Assignment #5

Integration and Visualization

Due 10 March, 2011

The goal of this week's lab is to integrate your ability to read data, execute simple data analysis computations, and visualization data.

For the next two projects, you may work with a partner, if you wish. For the project you will be combining your ViewRef class, your DataSet class, and your TK GUI program, so you'll need to decide whose code to use. Note that, if you work with a partner, the standards for extensions will be higher.


The end result of this project should be a functional prototype for a visualization tool. A user should be able to read in the data through menu functions and visualize the data in a customizable and interactive manner, as outlined below.

Read through all of the tasks and plan your design before you start writing code.

  1. The user should be able to read in a data set in CSV form with a header row and a type row, as outlined in project 3.
  2. The user should be able to pick two or three spatial axes and view the data in an interactive manner as a scatter plot, with the ability to translate, scale, and rotate the data. You can choose whether to implement rotation about the center of the view volume or rotation about the eye location (VRP).

    • Pick a method pre-scaling the data so that a unit distance has equivalent meaning in each data axis.
    • Pick a range selection method to determine the initial view.
  3. Implement an interface for the user to pick one additional axis and use color to represent its value in the above visualizations.
  4. Implement an interface for the user to generate a histogram (using matplotlib) of any single dimension. Give the user the ability to pick the number of bins (within reason).
  5. Add labels to your visualization, both the interactive visualization and the histogram.
  6. Add a legend for the color mapping you chose (e.g. red-green, blue-yellow, hue).
  7. Come up with an acronym or name for your program. Be creative.

    For example, Deluxe Integrated System for Clustering Operations [DISCO] was a web system we designed for data analysis a few years ago. We used a big rotating disco ball for the background of the main window when you logged in to the program.

    The success of your program may, in the end, be completely determined by how cool your acronym is. Then again, it's success may have something to do with the quality of your work. But it never hurts to have a cool name.



For this week's writeup, create a wiki manual or tutorial for your program, complete with screen shots. Give it an appropriate title. Don't go overboard, just give the user enough to get started and highlight the key features.


Once you have written up your assignment, give the page the label:


Put your code in the COMP/CS251 folder on fileserver1/Academics. Please make sure you are organizing your code by project.