This week we expanded our Display class to visualize data in up to five dimensions, 3 spatial, color, and size. Here is a brief description of my program with a highlight on the changes made this week:
Data can be load from csv or xml files using the file menu or the binding control-O. When a file is loaded, a plotting wizard pops up and allows the user to select different plotting options including which data columns to plot in which dimensions, how the data should be normalized, and how color plotting, if it is selected, should be handled. This wizard can be reopened to change plotting selections, and previous selections will be remembered. The application's view of the data space can be manipulated with the mouse as described last week, but rotation is now done around the origin for ease of use. Double clicking on a plotted point will display information about its values in each of the plotted dimensions. Labels for the spatial dimensions are placed on the axes. As with last week, there are bindings to align the view to different axes, to reset it, and to clear the data. A slider to scale the size of plotted data is available in the control panel.
Here are some pictures of the application:
The last picture is from a U.S. census data set I used for project 2.
I spent most of my time this week trying to come up with a good design for my wizard class. I wanted something flexible enough to use for future features (like linear regression on next week's project) but simple enough so that a wizard could be built quickly. I am relatively happy with how the design turned out but after fully implementing the class and getting a better sense of how it will be used, I have some ideas for major changes to make it simpler. I didn't have as much time as I would have liked this week so hopefully next week I'll get a chance to add a legend and try plotting with some additional dimensions.
- I created a wizard class which extends dialog and can be used to handle complex user input. The number of frames in the wizard is flexible and can vary depending on user selection. I used the wizard class to create the plotting wizard which has a frame for selection dimensions, for choosing which axes to normalize together, and for color plotting options. I intend to add more options to this process for future projects
- I added different color plotting options including any gradient between two colors and plotted based on hue
- I added labels to the axes which reflect which columns are being plotted on them
- I added a size slider to increase or decrease the size of all points
- I added a label to display point information (in the data base) for a point the user double clicks on