Final Project: Interactive Data Storytelling

Overview

In this project, you will find data on the web, scrape it, tidy it, visualize it, and then publish it to tell an interactive, data-driven story.

Groups

Same pairs as for Mini-Project 2

Timeline

Tentative Due Date Points
Stage I: Proposal Wed Dec 4 5
Stage II: Peer Review Tues Dec 10 5
Stage III: Project Submission Sat Dec 14 80
Stage IV: Project Presentation Sat Dec 14 10
——————————- ——————— ——-
Total 100

Key definitions

  • Scrape it”. As in Mini-Project 2, you must find data on one or multiple websites, and then acquire it with at least one of the four data acquisition methods we discussed:

    • APIs (using httr or httr2)
    • An API wrapper package (that requires an API key)
    • Harvesting data that appears in table form on a webpage (using rvest with html_table)
    • Harvesting pieces of data that could appear anywhere on a webpage (using rvest with html_text)
  • Tidy it”. Create a tidy tibble that will allow you to perform desired analyses. This might involve stringr, mutate, filter, spread, parse_, etc. You should use functions and iteration techniques where appropriate, and code with good style and commenting.

  • Visualize it”. Create plots that effectively tell a story about what insights can be gained from your data. Unless you’re doing a scrollytelling document, the user should be able to control and customize inputs to your plots.

  • Publish it”. We’ll discuss options such as GitHub Pages, shinyapps.io, rconnect.stolaf.edu, etc.

Examples of good past projects

Shiny apps that contain GitHub links to source code:

Shiny apps with separate GitHub links to source code:

Shiny apps with source code in Project folder on the RStudio server.

Stage I: Proposal

An approximately two-page document describing:

  • Website(s) you plan to scrape or data sets you plan to merge
  • Variables you plan to acquire, including variables you plan to generate from your raw data
  • Questions you plan to address
  • Visualizations you envision (include photos of plot sketches!)
  • Whether you plan to build an interactive shiny app (using shiny in R, flexdashboard in Rmd, or quarto dashboard in qmd), or a scrollytelling document using closeread in qmd. [Note: closeread and quarto dashboards both look intriguing and you’re very welcome to pursue them, but my experience has been much more with shiny and flexdashboard. I’m happy to learn alongside you with the other two modes, though, and help as I can.]

Stage II: Peer Review

Come prepared to share a draft version of your final product with another team during class. As a reviewer, come prepared to offer comments on how the plots you see could be improved to more effectively convey messages in the data. You might also be called on to share R code or hints on how to modify R code to achieve certain goals.

Stage III: Project Submission

Your submission (one per group) will be simply a link to a Shiny app or website containing your final product, along with directions for accessing your source code in a GitHub repo. In addition, each individual must complete a short reflection with the following components: (a) an evaluation of the contributions of each team member (including yourself), (b) a description of the biggest challenges and most satisfying triumphs in your project, and (c) a response to your peer review feedback, including changes made in your final project (and why!).

Your project score will be based on the quality of your team’s Final Product, and your individual contribution to your team, as assessed by all team members (and me). A high quality Final Product will show your abilities to scrape, tidy, and visualize data; illustrate creativity and strong effort; and tell a compelling story with excellent written descriptions and graphics. See rubric for more detail.

Stage IV: Project Presentation

During our final exam period, each group will present their final product to the class. The presentation should be well planned and rehearsed; it should take no more than 10 minutes, with each team member speaking approximately an equal amount. Your goal is to entice your audience to explore your app in greater detail. You should describe your motivation and main questions your app was designed to explore, walk through key features, and navigate your app to illustrate a few key findings. If you discovered a cool new R trick that enhances your project, feel free to share that as well.