What the application does. Consider including a screen-shot and a link to your demonstration video.
This application is a tool for analysing data and comparing data about Covid-19 in USA by plot data
that you interested in each chart.
This application allows you to sort the data by
- Timeframe in Day, Month, Year
- State in USA
- Topic about Covid-19 in USA
You can select which graph you want to plot to compare data.
- Selected 1 will plot left graph
- Selected 2 will plot right graph
You can select 3 different plot type in this program.
- Barh plot
- Line plot
- Histrogram plot
- Select Graph, Timeframe, State, Topic, Plot type
- Press Plot Button
- Select state you interested
- Press Sort by state button
- Select Graph you want to clear
- Press Clear button.
Any dependencies (packages) needed to run your program. How to run it.
In this application you need
tkinter
pandas
matplotlib
pip install tkintermapview
pip install customtkinter
pip install pyperclip
pillow
TkinterMapView Source: https://github.com/TomSchimansky/TkinterMapView
Describe the overall design, including a UML class diagram.
In this project, I use many different widget from tkinter.
Treeview and Scrollbar
for displaying items from data. 2.TkinterMapView
which is a tile based interactive map renderer widget for the python Tkinter library. TkiterMapView will display USA state that we are interested.Label
for labeling.Button
for clicking and let run tasks or take action.Frame and Label Frame
create a frame for widgets.Radiobutton
for selecting which graph user wants to plot.Combobox
select for sorting data.Progressbar
add to be responsive and show progress of the program.Customtkinter Frame
create a frame for TkinterMapView.
Describe any design patterns you used, and how they are used in your application.
- Model in this program will do a scientific computing and sorting data using pandas then sent result back to controller.
- View is the user interface that representing the data in the model by communicate via controller and controller to model. Mainly, I use for plotting the graph.
- Controller is a medium between View and Model which after user action to plot view will can sent data to controller and also receive result data from controller.
I use State Pattern which split into 2 state
ProcessingState
is a state use to notify the user that program is still processing (start the progressbar)StandbyState
is a state use to notify the user that program is standby and ready to process the task. (stop the progressbar, set status, set active button)
Anything else you would like to include. Anything you think is important or interesting that you learned. For example, any interesting libraries or packages you use in your application.
This project is such a good practice of scientific computing using (pandas, matplotlib) combining with User interface (tkinter) and other. These two combination create powerful/useful program.
In this project, I have learned a lot about tkinter basic and about how to handle with the event loop. I think the hardest part is about way to use design pattern and also the progressbar which I have learned about Thread.
The most impressive library is the tkintermapview because I can use the data from my dataset to search the state on the map.