Project 1 - Subway

Application due 2/12 at 8:59 pm Chicago time
Documentation due 2/14 at 8:59 pm Chicago time



Project 1 will be an individual project to give people practice with writing a web-based application that visualizes the same data in multiple ways using R and Shiny and ggplot and Shiny Dashboard. In this project everyone will learn how to import data, use R to manipulate the data, and create an effective user interface for visualizing and analyzing this data on the touch screen classroom wall.

This project will focus on using R to visualize data on riders on the Chicago L over the past 20 years, and use shiny to give people an interactive interface to create those visualizations.

The original data is available from the Chicago Data Portal at:
https://data.cityofchicago.org/Transportation/CTA-Ridership-L-Station-Entries-Daily-Totals/5neh-572f
I would export the TSV for Excel version but the CSV version is also fine - CTA_-_Ridership_-__L__Station_Entries_-_Daily_Totals.tsv

The file is 39MB. Data file sizes will increase as the class goes on, up to about 10Gig in Project 3, so make sure you have enough free hard drive space to manipulate these data files.

The free web-based version of the Shiny server we are using for Project 1 has a limit of 5 MB for each data file, so you will need to break this file up into smaller pieces to be able to upload it. R itself can be a good way to do this, or you can do it through shell scripting.

To start with I would take a look at the raw data file in a text editor or excel to get an idea what kind of data it contains and what the columns are, and then try out different types of manipulations and visualizations in either R-Studio or Jupyter to work out what you are going to need to do. Then think about how you are going to lay out the various visualizations and how you are going to create the user interface in shiny.

The demonstration project from week 2 in class should give you a good starting point.

You will be writing your code to run in a web browser and it should run on all current browsers (Chrome, Safari, Firefox, Explorer, Edge, etc.) but the main evaluation and demonstration will be done on our classroom wall which runs the latest stable version of Chrome under Windows 11. The total screen size is 11,520 by 3,240 but we will assume we are only using an HD aspect ratio part of it with a size of 5,760 by 3,240 at 200% under windows. Assume some space will be lost for borders, tool bars etc. The fonts and visualization primitives you create should be work effectively at that scale. The user should not need to scroll the window, ever, so you should experiment with different ways to organize the information and controls to find the most effective combinations. Users will be using touch to interact, not a mouse or trackpad, so make sure your controls are reachable and at an appropriate size for people to use touch. You can (and should) develop your solution on a typical laptop / desktop computer, just be sure to test on the classroom wall regularly before turning your solution in to make sure it works by default at that scale and resolution. The project will be graded in terms of how it works on the classroom wall with touch. Since we are using a flipped classroom model this term there will be time in class to test on the classroom wall.

You should use ggplot for your charts. If you use another library without permission you will lose points.

Some potential gotchas:




For 60% you need to:


For an additional 20% you need to


For an additional 20% you need to

Graduate Students need to add:

In all of these case you need to make sure that your visualizations are well constructed with good color and font choices, proper labeling, fast updates, and that they effectively reveal the truth about the data to the user.  The application should load within 30 seconds, and definitively not time out.

Note that as part of the web page part of the grade you will need to use your interface to show your findings, so make sure that the way your interface displays information is clear.

One way to shrink the initial data file size is to create 3 separate data files for the 3 stations you are interested in looking at.



Turning in the Project

There are two due dates for the project.

The source code and application are due first.

For this project you should host your solution using Shinyapps.io. For Project 3 we may move to a local server. This kind of deployment is covered in the 'Learn Shiny' tutorials.

Your code should be turned in and made available on GitHub in a public repository for the project. You can keep the repository private while doing your development. I would suggest setting up the GitHub project early and regularly pushing code to it as a backup.

It is important to note that 'getting it to work' is just a prerequisite to using the application to find answers to your questions. It is that usage that will give you ideas on how to improve your app to make it easier and more intuitive to find those things. Writing the application at the last minute pretty much guarantees that you will not come up with an intuitive interface.

Many of the routines you write for this project will be used again and expanded upon in the upcoming projects - e.g. all of the projects will need graphs and tables, so it is a good idea to write your code in a way that it is reusable so you can modify it rather than totally rewriting it later.

Chrome's Developer Tools allow you to emulate screens of different sizes (view / developer / developer tools / settings / devices). The appropriate setting to simulate half the classroom wall seems to be 2,880 be 1620.

Before the application due date&time please send an email to andy and the TA with the URL of your GitHub site and your Shinyapps site.


The second deadline is for the documentation.

You should create a public web page with multiple sections (visible to anyone for at least the duration of the course) that describes your work on the project. You can host your web page at UIC (http://people.uic.edu), GitHub, or the provider of your choice, as long as it remains publicly available to all. You can use any publicly available templates as long as you cite them, or create your own.

This page should have several sections including:

all of which should have plenty of screenshots with meaningful captions. Web pages like this can be very helpful later on in helping you build up a portfolio of your work when you start looking for a job so please put some effort into it.


You should also create a 5 minute YouTube video showing the use of your application including narration with decent audio quality. That video should be in a very obvious place on your web page. The easiest way to create the video is to use a screen-capture tool while interacting with your application, though you will most likely find its useful to do some editing afterwards to tighten the video up. If you do decide to use your phone or tablet to make the video in the classroom, then please shoot the video in landscape rather than portrait orientation. Your video should show the capabilities of your tool through a set of specific examples of interesting things you found in the data.


I will be linking your web page to the course notes so please send andy and the TA a nice jpg image of your visualization solution for the web along with the link to your website before the deadline. The image should be named p1.<your_last_name>.<your_first_name>.jpg and be roughly 1920 x 1080 pixels.

Once you have your web page done, send the URL to Andy and the TA before the deadline. We will respond to this email as your 'receipt'.



An important part of creating these kinds of applications is getting feedback and using it to improve your design, and learning to give quality feedback to others.

See the course notes for week 6 for more details on the presentations.


Student Name
GitHub Link
Shiny Link
Web Page Link
Video Link
Representative Image
Arica
link
link
link
link

Asuncion
link
link
link
link

Awan
link
link
link
link

Chelakkarai Sivaraman
link
link
link
link

Chintakunta
link
link
link
link

Elliott
link
link
link
link

Fernandez Lezama
link
link
link
link

Genova
link
link
link
link

Grams
link
link
link
link

Handowo
link
link
link
link

Herrera
link
link
link
link

Hussain
link
link
link
x

Jakvani
link
link
link
x

Jogi
link
link
link
link

Kao
link
link
link
link

Kmita
link
link
link
link

Kodithyala
link
link
link
link

Kushwah
link
link
link
link

Lau
link
link
link
link

Magnadia
link
link
link
link

Martin
link
link
link
link

Mehta
link
link
link
link

Mullenkuzhiyil Sunny
link
link
link
link

Nath
link
link
link
link

Nunez
link
link
link
link

Omar
link
link
link
link

Parovyi
link
link
link
link

Patel
link
link
link
link

Qi
link
link
link
link

Ranganathan
link
link
link
link

Saxena
link
link
link
link

Yelyubayeva
link
link
link
link

Zeng
link
x
x
x


(I tried to name everyone by their family name; if I made a mistake please let me know and I will correct it)


last revision 2/19/2022 - updated project links
2/10/2022 - updated the most appropriate screen size to give the chrome developer tools to simulate 1/2 of the classroom wall is
2,880 be 1620