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.
- 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.
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.
- Implement an interface for the user to pick one additional axis and use color to represent its value in the above visualizations.
- 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).
- Add labels to your visualization, both the interactive visualization and the histogram.
- Add a legend for the color mapping you chose (e.g. red-green, blue-yellow, hue).
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.
- Enable the user to click on a data point in the visualization and have it generate a dialog box showing the complete feature vector for that data point. This feature is guaranteed to be used if you provide it. It's almost guaranteed to be requested if you don't.
- In the 1-D visualization, generate an additional dialog window that includes basic analysis of the data such as the range, mean, median, mode, or standard deviation. See if you can indicate the mean, median, and mode visually in the plot.
- Demonstrate your system on your data from project 1.
- In addition to color, enable your visualization to use size or other feature to represent an axis. For example, use icons for representing an enumerated variable.
- Using the bird arrivals data, enable the user to generate visualizations by bird. Abstracted, this is the ability to filter the data to be viewed from one column based on a value, or range of values, in another column.
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.