Another F1 season is officially underway! I’m excited to share a Python Dash app that lets you explore F1 race data. I originally built this app about a year ago to learn how to use Plotly/Dash and ended up keeping it alive since some folks enjoy using it. Admittedly I’m overdue to share it with this community, but late is better than never
Using data processed via the FastF1 Python library, I developed this app to help fellow armchair analysts access F1 data, regardless of their coding ability. You can use it to explore how a race progressed at a high level or dig into the low-level details of car telemetry on specific laps. There is only 1 grand prix in the list right now since we’re at the start of the season, but I’ll add others as the season progresses. Sharing screenshots below for those passing through:
Each driver’s gap to the winner (in seconds) over the course of the race
Heat map visualization of each driver’s lap times and pit stops
Each driver’s tyre strategy
Telemetry (gear, speed, throttle, or brake) as viewed on a map
Telemetry (gear, speed, throttle, and brake) as viewed as a function of lap distance. Ties the location of a user-selected turn on the map to a vertical line on the telemetry.
Reflections on Using Plotly/Dash for the First Time
On the technical side, this project required me to go beyond introductory Plotly/Dash functionality and exposed me to the power of what they can do. What I liked most was that they struck the right balance of customization and effort for this use case. They let me create bespoke interactions that I couldn’t easily do in tools like Tableau or Looker. At the same time, they also abstracted away some of the pain that comes with using other highly customizable packages (e.g., d3.js).
I also had a positive developer onboarding experience due to an abundance of clear documentation and an active developer community. The introductory examples in the Plotly/Dash documentation and Adam’s Charming Data yt channel are a great place to get started. As an experienced data scientist who wanted to dig into the details, I found most of the answers I needed in the detailed documentation or various forums.
Now that I’m a year wiser, I’m planning to clean up my code to be more in-line with best practices and will reply here with the github link when ready.