Processing代写 | ENGG 233 –Spring 2020 Term Project: Data Visualization

ENGG 233 –Spring 2020
Department of Electrical and Computer Engineering
Term Project: Data Visualization
Project Objectives
1. To gain experience with the design and development of a relatively larger software
2. To gain practical experience in using programming constructs learned in ENGG 233 such
as classes, arrays, functions, etc.
3. To gain experience with iterative development process.
4. To develop teamwork and presentation skills as a programmer.
Submissions and Group Work
Students have the option of working on the project in groups of two or working alone. Groups of
larger than 2 people will not be allowed.
If students choose to work in groups, they must choose a partner from within their TA lab
The project is due Sunday June 14, 2020 @ midnight
You will need to demonstrate your solution June 16 or June 18 during lab time. ( 5 – 10
minutes) We will prepare a schedule and post it on D2L.
Instructions for Groups
Students who work in groups must follow the following guidelines and regulations:
1. The workload must be divided equally between the two students. During the demos,
the TAs will specifically ask about what each student has done in order to ensure both
students have contributed.
2. Both students must be present at each demo. If a student is absent, that student will not
be awarded the grades for the demo.
3. Only one of you needs to submit the project. Both milestones can be submitted on the
due date of June 14, 2020.
4. When working in a group all members will get the same mark.
5. You need to let the instructor know who will be your partner by June 2, 2020
Important Note:
You can work with other groups and students, however, be very careful not to simply use the
code from other students. Plagiarism is a serious academic offense. Please consult the
University of Calgary Calendar for more information:
You have been hired by the city to visualize some simple weather data. The data provides the
average daily minimum and maximum temperatures for each month for about 30 years. You are
to display this data using the following charts:
– Bar chart
– Scatter point plot
Your software should also give the user flexibility in showing data for select months, and only
showing max or min temperature. Figure 1 displays a sample of the finished project.
Important note: Your completed project does NOT have to look exactly like the sample
screenshots you see in this document. You can choose different colors/labeling styles. Feel free
to be creative!
The Data
The data used for this project has been downloaded from the following source:
and has been simplified for your project. Please download the “.csv” file called CalgaryWeather.csv
from D2L to use for this project.
Minimum Requirements
– Interface requirements:
• Appropriate axis and labels for the graph and data (see Figure 1)
• Options allowing the user to choose different types of plots o Bar chart o Scatter point plot
• Options to filter the data:
o Based on min/max temperature o
Based on month of the data
Figure 1 – An example of a completed project
Important note: The user should be able to keep modifying the visualizations (i.e. the graphs) without
ending the program.
Optional Requirements for Bonus Points
Students may add additional features/functionalities for a maximum of 15 bonus marks. These would
include but not limited to:
• Creative visualization – e.g. pie chart (up to 5 marks)
• Implementing additional filters – For example allowing the user to view the data for select
number of years (up to 5 marks)
• Plotting snowfall data and showing how it correlates with temperatures (up to 3 marks)
• etc.
Program Modules and Classes
Your program must have several classes that will be organized as separate tabs in the
Processing IDE. Here is the list of some of the modules or classes that your program should
have (Note: you may decide to have more classes. You are also free to make changes to the
classes as you see fit, as long as the functionality of the program is not compromised):
• Class FileIO
This class has the following member variables:
o filePath to store the path of the selected sensor data file o
dataTable of type Table to load the data in the csv input file
• Class Date
Member variables:
o Month
o Year
• Class TemperatureData
Member variables: o
A Date object
o minTemperature o maxTemperature
o snowFall (bonus marks for plotting snowfall)
• Classes BarChart and ScatterPointPlot
These classes handle the plotting of each type of graphs. They would have member
functions such as drawChart()
Menu Options
To implement Graphical User Interface (GUI) controls such as buttons or toggles, you can use
the ControlP5 library. In your Processing IDE, go to Sketch -> Import Library… -> Add Library to
see the following window. You can then type ControlP5 in the search box as shown below to
find the library. You can then click on Install to add it to your processing IDE.
Using ControlP5 should be fairly straight forward, but you can use the following tutorial for

Project Requirements in Iteration
Software projects can be very complex, therefore the process used to manage this complexity is
very important. One effective process widely used in software development is referred to as
iterative development.
Simply put, iterative development is the processes of breaking down a larger project into
smaller steps (i.e. iterations or milestones). To ensure you are on track for the project, and to
make sure you will get marks for all your efforts, not just for the completed project, this project
is divided into 2 different milestones. For each milestone, you should fully test your code and
ensure you satisfy all the requirements for that milestone correctly. This is very important as
you don’t want to keep building on a faulty project.
Important Advice: You should save a version of your project after each milestone. This is the
basic idea of “version control” in real-life software development. This is to keep track of the
changes made to your program and to ensure that you have a working version of your software
which you can go back to if needed.
Milestone 1 (45 points):
This milestone is due on Sunday June 14th. Students must demo their milestone in their
scheduled lab during this week. See posted schedule on D2L.
In this milestone you are expected to implement a simple version of the program which only has
a bar with axis and their labels. A program output, as demonstrated in the following figure, is the
minimum expectation; but you can demonstrate additional feature if you like:
Figure 2 – Simple version of the Software
What to Submit for Milestone 1:
Submit a .zip file containing all .pde files you have created in this milestone to the dropbox on
Milestone 2 (55 points):
This milestone is due on the week June 14, 2020 midnight. Students must demo their milestone
in their scheduled lab during this week. See posted schedule on D2L.
Figure 3: Bar Chart for the month of August for each year
Figure 4: Scatter point plot for the month of August for each year
In this milestone you are expected to implement the rest of the project including:
• Scatter point plot
• Options to show max and min temperature data
• Options to display data for each month for both plot types
The output of your program would look similar to Figure 1, 3 and 4.
What to Submit for Milestone 2:
Submit a .zip file containing all .pde files you have created for this project to the dropbox on