ETS Visualization Class Project Fall 2009

From VisibleGovernment

Jump to: navigation, search

(Note: Translated from french. See the original here)

Assignment 3

Source code and data: ExpenseVisualization-V2.zip (new version)

For this project, you are to develop an interactive visualization of government spending. Two data sets are provided ( "hospitality expenses" on entertaining, and "travel expenses", relating to expenses incurred during government travel) as well as source code for a basic software application that reads a dataset and allows a simple visualization of certain aspects of the data. Your task is to edit the source code to enable richer interactive visualizations.

The demo application is written in Java and uses the API Processing (inheriting class PApplet), and also the bookstore Interfascia for widgets.

The raw data is in the text files hospitality_expenses-utf8.txt and travel_expenses-utf8.txt. Small samples of these files are in hospitality_expenses sample.txt-and-travel_expenses sample.txt, which could be useful for testing and debug your code with small data sets. The code uses a database SQLite (stored in the file log740.db) created from hospitality_expenses-utf8.txt.

Note that the .jar files for API Processing, Interfascia, SQLite, and documentation for Interfascia are included in the. Zip provided to you. You do not need to install these things separately.

As a first step:

  • Make a 2D graph showing time on one axis and costs on the other axis. This graph could be a broken line graph, bar graph, or something similar. The user may see expenses day-by-day or month-by-month throughout the time covered by the data (from 2003 to 2008). You can use an appropriate mechanism, such as radio buttons, allowing you to select between views by day and views per month. In the view by day, you must perform a way scrolling (scroller) graph over time, and also change the scale (zoom in) to see the data set, or to examine a particular time period.

Then you must also perform other data views to enable a user to a subset of things following:

  1. See spending per individual. For example, this view could show which individuals spent the most money relative to others.
  2. See spending per department, as well as which department spent the most. Note: there are fewer than 50 departments in the unique data sets.
  3. There is already basic code to see spending by city in a province. You can keep this approach and improve it (eg showing the total expenditure for each province in the map of Canada), or adopt a different approach (eg see all the cities of Canada at the same time, but grouped by province or view as cities outside Canada, or see spending per restaurant in alphabetical order).
  4. See where the money has been spent in relation to known events or specific periods of time. For example, is more money spent on the campaign trail than rest of the time? During the summer? On Friday? In other international events (conference of the WTO, ...)?
  5. Allow read and display the second data set ( "travel expenses") with the same kinds of views that you have done for the first set of data ( "hospitality expenses").

If you are a team of 3 (or 2) people, you can choose three (3) items from the list above to achieve. If you are a team of 4 people, you must make four (4) items in the list above.

By design and implementation of different views of your data, try to think of interesting ways to use

  • Data below the cursor, for example to show that the user can click on the item for more information.
  • The tooltips, or simply text labels displayed to give details on an item below the cursor
  • Labels on the axes on the items, or elsewhere, to provide more information without overloading the sight of too much information

If you have a view that is too large to see all the data, it should be possible to "scroll" Within sight to see all the data.

Moreover, in each of your views, it should be possible to seek more detailed information on each item (point, bar, pie, province, etc..) In the view. This can be done via a tooltip that appears when the cursor is over the item, or appear in a popup when you click on the item, or to appear in the bottom of the view (in a special field ), etc.. The important and allow the user to pick the "details on demand" (details on request).

The final version of your code should be an applet that can integrate into a webpage.

You have to submit a report (with your code) and also to present your project in class.

The report shall contain the following sections:

  • A "Documentation" section briefly explaining the operation of the user interface of your software. Explicitly identify the views from the list that you've chosen to do. Your lab instructor should be able to read this section and easily understand the features you have done without having to look at your code, and also understand how to operate your software (example: buttons, keys, special options or hidden) in the running. This section should be between 2 and 4 pages of text (single spaced), with added screenshots totaling a maximum of 8 pages.
  • A "Implementation" section (1-2 pages, single spaced) which briefly discusses the details of your code. Talk about the classes, data structures, methods or subroutines or key locations in your code that you changed. Imagine that this section is intended for programmers who already know the code provided for the course, and who must take charge of your code for maintenance.
  • An "Improvements" section (1-2 pages, single spaced) in which you suggest ways that your interface could be improved to make it better or more flexible. For example, are there features that you wanted to achieve, but which you ran out of time? Also, are there any questions that a user could ask for data that the current interface does not respond? For example: "Among people who spend the most, and where when they spend the most? "Or" In the cities where we spend the most, which departments are most active? "You can include a sketch by hand (and digitized) to demonstrate the operation of an improved interface.
  • A section "Processing of Opinion" (one paragraph) where you give your opinion of using (API) for Processing this project is that it was useful? In future versions of the course is that it is worthwhile to continue using Processing, or should we just use the Java "pure"?
Personal tools