Git Product home page Git Product logo

f1-2021-analysis's Introduction

Visualising the Formula 1 2021 Season

App Deploys Test app w/ {renv}

Welcome!

Whether you consider yourself a true Formula 1 veteran, or this is the first time you've heard of the sport, we bid you welcome to: our dashboard!

Firstly, a quick overview of what you can find on this page:

Lights out

The Contributors

We are four students at UBC, Vancouver, part of the Master of Data Science program:

The Motivation

The 2021 Formula 1 season was one of the most exciting in the history of the sport. A title fight in the drivers championship that left both the neutral viewer and fans of either Red Bull's Verstappen and Mercedes' Hamilton on the edge of their seat and beyond until the very last lap of the year in Abu Dhabi, and an equally as engaging brawl in the constructors midfield makes no one deny its legendary status.

With all these developments throughout the season's calendar it can be hard to remember how it all went down. We are looking to provide a helping hand in reliving this awesome year, by summarising and visualising all the important statistics of 2021!

The Need-to-Know

Of course not everyone is as familiar with Formula 1 as the most dedicated fan, so here is a super quick run down to get you up to speed:

The Formula 1 season runs from the start to the end of the calender year, with the first race usually taking place around March, and the last one around December. In one season, 20 drivers spread out over 10 teams try and accumulate as many points as possible. Any point they score counts towards two different competitions: the Drivers Championship and the Constructors Championship. This means that the driver that has the most points after the last race is World Champion, and the two drivers that race for the same team who have the most total points combined, make their team the Constructors Champion.

So how does one get these points? Each weekend, the drivers get three practice sessions, after which they continue to qualifying. During qualifying they have to try and drive as fast as possible for one single lap. Then, the order of who drove the fastest lap determines the starting grid for the race on Sunday.

On race day, the drivers race for 300 kilometers around that weekends track, in a spectacle that isn't just about who can drive the fastest, but also about what cars have the best design, what team can deliver the fastest pitstops, and what driver manages to stay out of collisions.

Then, once the 300 kilometers are up, the order in which the drivers cross the finish line determines their position for that race, and more importantly how many points they get! And additionally, the driver that set the fastest lap time during the race, receives one extra bonus championship point.

The Description

Landing Page

Our app opens on the Season Highlights page. On the left hand side you can either select Drivers or Teams: this selections determines what is shown in the cumulative season points plot to its right. Underneath the plot is a slider with which you can adjust the number of races shown in the plot. On the right hand side is a table with all the races that happened in 2021, in order of which they took place. Adjusting the slider will highlight the races in the table that are currently included in the selection.

Race Page

The second page is the Race Information tab. In the top left there is a dropdown selection box where you can select what race you'd like to have displayed, together with previous/next buttons to navigate race-by-race. Underneath this is a picture of the track layout, along with a table containing facts about the corresponding Grand Prix. To its right is the results table: this shows the order the race finished in, but can also be sorted by starting position, fastest lap, and any other column displayed. In the top right is a search bar in order to filter the table by a search query. The fastest lap driven is highlighted purple in this table.

The Contributing Guidelines

Do you have ideas on how we can improve our dashboard, and are you interested in contributing? We'd love to see your suggestions! To make changes locally just clone the repo, navigate to the top folder, and run the app:

git clone [email protected]:UBC-MDS/f1-2021-analysis.git # If SSH is set up

cd f1-2021-analysis

RScript app.R

Check out the contributing guidelines if you're looking to make additions to our project! Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.

The License

f1-2021-analysis was created by Tanmay Agarwal, Yingxin Song, Renzo Wijngaarden, and Eric Tsai. It is licensed under the terms of the MIT license.

The Credits

The datasets used in this app are from Formula 1 World Championship (1950 - 2022) on Kaggle and from Formula 1 Datasets on Github. The flag images are from the country flags repository on GitHub.

f1-2021-analysis's People

Contributors

erictsai1208 avatar renzowijn avatar tanmayag97 avatar yxin15 avatar

f1-2021-analysis's Issues

Meeting -- Feb 27

Distributed work for Milestone 2

  • Decided to make the world map a low-priority item -- nice to have but not essential
  • We will have two tabs, as described in Milestone 1
    • Two team members will be working on each tab to minimize merge conflicts
  • Distributed the writing components loosely
  • Reconvening on Wednesday for updates on how the dashboard items are going

Milestone 2 Feedback

Group 15

  • Submission (4)
    o 4/4 mechanics
  • Developing your Shiny App (42)
    o 10/15 mechanics
     Each student was required to create a branch to show their contributions
    o 5/5 quality
    o 15/15 visualization
    o 7/7 accuracy
  • Reflection (6)
    o 4/6 reasoning
     Reasoning was over the word limit
  • Improve the README (6)
    o 6/6 reasoning

Final Grade:
51/58

Things I've spotted to fix before Saturday deadline

@tanmayag97 for the race results table:

  • The position column is formatted as a string, if you sort by position it goes in order 1, 10, 11, .., 2, 3
  • Fastest lap is rounded to whole seconds, please include milliseconds as well so you can see the differences between drivers
  • The track column is redundant, since the user already chooses what track to select, and the information for it is in the facts table
  • Set the standard number of entries shown to 20, since there's always 20 results
  • Change the order of the columns to show: driver, driver no, team, position, time/retired, laps, starting grid, points, fastest lap. If possible, highlight the fastest lap cell based on the value of +1 point, and leave +1 point column out
  • Clicking on a row now highlights it, could that be disabled?

@erictsai1208 For the point graph:

  • Limit the x-axis to the selection of the slider, instead of just limiting the lines
  • Can we set the side panel with the driver and teams selection to not show the scrollbars when you can't scroll?
  • Increase the height of the plot so it fills a 16:9 aspect ration screen (so a bit higher)

@RenzoWijn for the second tab:

  • Add the track pictures to the second page
  • Unknown whitespace under image causing facts table to go down
  • Title of facts table has periods in it, fix

General things:

  • Can we make our dashboard like a dark theme? It just looks so HTML right now
  • Where do we want the lap-by-lap time plot? The race results graph is on the big side but I kinda like it like that. New tab?

Meeting -- March 13

Things to address from peer feedback

Julie

General UI improvements:

  • Change Driver/Team checkboxes
  • General theme change (dark mode)
  • F1 logos
  • Make races table scrollable or two columns
  • Centre the flags
  • Add progress bars/spinners

Eric

Season tab:

  • Reduce code repetition for tabs regarding driver and team selection
  • Add team colours to plots

Tanmay

  • Change left slider knob
  • Select all button
  • Sort drivers in season tab
  • Tests
  • CI/CD

Renzo

Race tab:

  • Drop index column
  • Back/next buttons
  • Highlight DNF as red and add highlight explanations
  • Table limit to 15
  • Update README

Meeting -- March 1

Reconvened to discuss updates on the dashboard components so far:

  • Panel 1 Drivers plot completed with driver selection, Teams plot in progress, Races table now highlights cells based on the slider
  • Panel 2 Tables and plots completed locally, working on selection interactions and adjusting panel layout
    Updates March 3:
  • Panel 1 Both Driver and Teams plots have been created and work with the slider, Flag images and city name information added to the Races table

Milestone 1 Grading and Feedback

Congratulations on finishing milestone 1! We can see you put a lot of work into this project, nice work! Below we list some specific feedback you can use to improve your project.

Mechanics 4/4

Section 1: Motivation and purpose: writing: 0/2, reasoning: 8/8
proposal.md: Several grammatical or spelling errors are present (2-5/250 words). -2 writing
•Review capitalization, punctuation, and spacing.

Section 2: Description of data: writing: 2/2, reasoning: 6/8
•The level of description in the dataset is very general and it is not focusing in the variables that are important for the analysis. No need to tell us what the CSV files are, just focus on the key information that you will be using, -1 reasoning
•There is no evidence of data quality analysis. Are there missing values? Are these values an important percentage of the dataset? -1 reasoning

Section 3: Research questions and usage scenarios: writing: 0/2, reasoning: 12/12
•Several grammatical or spelling errors are present. Repeated sentences/messages (first 3 sentences can be reduced). (2-5/250 words). -2 writing

Section 4: Description of the app and sketch: viz: 10/10, writing: 2/2, reasoning: 3/3
•Just a note, a slider doesn’t seem like an appropriate choice to select races.

Section 5: Teamwork contract and collaborative documentation: reasoning: 4/4

Section 6: Code of conduct: 1/1

Section 7: Contribution guidelines: 1/1

Grade: 53/59
If anything is unclear, please feel free to ask questions in this issue thread.

Meeting -- February 13 2023

  • Discussed and chose a topic (F1 Racing Season 2021 stats)
    • Narrowed down the scope to a single season to avoid being overwhelmed by data
    • Very interesting season that could make for a very interactive dashboard
  • Discussed the proposal sections and possible layouts for the dashboard
  • Distributed tasks for the milestone, such as who is taking what section of the proposal, creating the sketches, and other miscellaneous tasks.

Milestone 4 Feedback

Congratulations on finishing milestone 4! We can see you put a lot of work into this project, nice work!
Below we list some specific feedback you can use to improve your project.
We provide tick boxes for you to use in the future as you address these concerns to improve the final grade of your project.
If anything is unclear, please feel free to ask questions in this issue thread.


1. Submission instructions

rubric={mechanics:4}
Well done!

2. Improving your app

rubric={mechanics:20}
Well done!

2. Reproducibility

2.1 - Testing

rubric={mechanics:5, accuracy:5}
Well done!

2.2 Continous Integration and Deployment

rubric={mechanics:5, accuracy:5}
Well done!

3. Tie it all together and deliver a production ready app

rubric={mechanics:20, accuracy:20, viz:10}

You are creating your production-ready Shiny app this week!
Well done!

Improve the user feedback
Well done!

Improve the documentation
Well done!

4. Reflection

rubric={reasoning:6}
Well done!

Congratulations! Excellent Work!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.