Title image Spring 2017

Integrating Data and View

Due 6 March 2017

The goal of this project is to bring together all of the elements--data, GUI, and viewing--into a single application that enables interactive visualization of data sets in the proper format. The result of this project should be an application that can read a data set and enable the user to interactively view it in up to 5 user-selected dimensions (3 spatial, color, and size).


  1. Create an updatePoints method that is analogous to the updateAxes function. It should build a new VTM, use the VTM to transform the matrix of data points, then update the coordinates of each data point using the canvas.coords function. Note, if there are no data objects (len(self.objects) == 0), then updatePoints can return without doing anything.

    You should add a call to updatePoints wherever you have a call to updateAxes.

    Test your program with the two data sets provided on the lab page.

  2. Go back and create a proper handleChooseAxes function. This function should let the user select the data column to use for each of five different axes: X, Y, Z, Color, and Size. The user must select at least the X and Y spatial axes, but the Z, Color, and Size axes are all optional and can be used in any combination with X and Y.

    You have some flexibility as to how you implement this capability. You can create a single dialog that lets the user specify all of the information. Alternatively, you can put popup menus on your main screen that let the user select each axis and then have a Plot button that clears the screen and then uses the current selections to plot the data. The choice is yours, but focus on the workflow aspects of the design. It should be easy to generate plots with different columns in different axes.

    In particular, make sure it is easy for the user to know which columns are which by using the proper headers. Do not use column indices, and do not require the user to type a header name in order to select a column.

  3. Add the necessary code to support the color and size aspects of the plotting. A nice extension is to add legends to your main screen that show the values corresponding to different colors and sizes.
  4. Test your system on the Australia Coast data. Try plotting using latitude and longitude as (x, y) with other dimensions as z, color, and size. Capture some screen shots. An extension is to enable the user to select an Eckert projection for the latitude and longitude variables.
  5. Test your system on the data set you used last in project 2.



Make a wiki page for the project writeup.

  • Write a brief summary of your project that describes the purpose, the task, and your solution to it. The summary should be 200 words or less.
  • Write a brief user manual, with screen shots, for your application. Include any extensions or enhancements you implemented.
  • Include the screen shots for the provided data sets and for your own. Be sure to note what axes are being plotted in any images you show.
  • Handin

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


    Put your code in the Private subdirectory of your folder on Courses. Please make sure you are organizing your code by project. Your handin code should include all the python files necessary to run your program as well as the data file you used in Project 2 and again this week to test your code.