Showing posts with label strava. Show all posts
October 13, 2020
#WorkoutWednesday 2020 Week 42: Can you build a Strava Workout Calendar?
BAN
,
bar chart
,
blending
,
calendar
,
dashboard
,
filter
,
strava
,
table calc
,
table calculation
,
text
,
Workout Wednesday
,
WOW
,
WOW2020
No comments
Introduction
When Lorna asked me to be a Community contributor for Workout Wednesday, honestly, I was hesitant since I don’t participate every week. I typically only take on the challenges that I think are most beneficial to me as a teacher. I want to share work that I know the Data Schoolers are likely to use on their placements. Lorna talked me into it (she’s my favorite after all) and I have something pretty straightforward to share with you this week.
I’m a keen triathlete and track all of my activities on Strava. There are some great dashboards and visualizations that help you understand your performance. One of my favorite is the Training Calendar. It gives you an overview of an entire year at once. And that’s what you’ll build for this workout.
Requirements
- Dashboard size: 1680 x 1020
- Max 3 sheets
- Max 1 text box
- Joins are not permitted
- Data model is not permitted
- They MUST be separate data sources.
- No annotations
- No text boxes on the main chart
- No floating objects
- No Level of Detail expressions
- Remove highlighting from anything you can click
- Match formatting and tooltips
- The blue hex code is #0070A0.
- The blue bars on the upper right are the weekly number of hours spent exercising.
- The black bars in the main chart are the daily hours spent exercising.
- Any days when I did not exercise should have zero hours displayed.
- Allow scrolling through the years
Dataset
The two files you need can be downloaded here. REMEMBER: No joins or data modeling!
Attribution
When you publish your solution on Tableau Public make sure to take the time and include a link to the original inspiration. Also include the hashtag #WOW2020 in your description to make it searchable!
Original visualization link to include on Tableau Public - https://public.tableau.com/profile/andy.kriebel#!/vizhome/WOW2020Week42-CanyoucreatedaStravatrainingcalendar/TrainingCalendar
Share
After you finish your workout, share on Twitter using the hashtag #WOW2020 and tag @VizWizBI, @AnnUJackson, @LukeStanke, and @_L orna_Brown.
Solution
February 20, 2019
Improving Upon Strava Activity Summaries: RIDE IT London Osterley Sportive
A few weeks ago, I voluntold Luke Stoughton (Head of Data School Recruitment and good friend of mine) to join me for a 52 mile cycling sportive hosted by Evans, a UK-based chain of cycling shops. Now, there's one thing to keep in mind...Luke had only ridden up to about 20 miles on a single ride. He WAS NOT happy with me, but he went anyway.
Coach Carl joined us as well, so I met him at a train station on the way and we rode the rest of the way to the start at Osterley House, an incredibly beautiful National Trust park and house. We met Luke there and headed off on our trek, stopping at two feed stops (I ate about eight pieces of cake at the second), peddling up three steep hills (they weren't that bad, but Luke hated it and threatened me), before looping back to the start and hitting the pub for a couple well deserved refreshments.
Along the way, I was thinking about how I could visualize the data. Strava does a decent job (see my ride here) and I thought I'd use that as a basis for my viz. My goals:
Coach Carl joined us as well, so I met him at a train station on the way and we rode the rest of the way to the start at Osterley House, an incredibly beautiful National Trust park and house. We met Luke there and headed off on our trek, stopping at two feed stops (I ate about eight pieces of cake at the second), peddling up three steep hills (they weren't that bad, but Luke hated it and threatened me), before looping back to the start and hitting the pub for a couple well deserved refreshments.
Along the way, I was thinking about how I could visualize the data. Strava does a decent job (see my ride here) and I thought I'd use that as a basis for my viz. My goals:
- Use a Mapbox map background as similar as I could to the Strava map (which is proprietary).
- Use the Strava colors (I found the hex codes in their brand guidelines and added them to my preferences file).
- Prep the data in Alteryx. There is a web data connector, but I like being able to create my own row level calculations and extract only the data I'm interested in. Plus it gives me an excuse to practice Alteryx more.
- I like how the elevation timeline, but for me it's lacking context by not including speed. I decided to keep its wide and short style while creating a dual-axis chart to overlay speed on top of the elevation.
- I included key moments as viz in tooltips. Hover over the gold ribbon (fastest speed) to see a picture of Luke and Carl speeding down the hill. That was fun! You can also see a selfie of us at the end.
- Include interactivity like Strava. Basically link the map to the chart and vice versa.
- Include speed and elevation on each point.
- Everyone loves a good BAN! FYI, Strava calculations elevation climb differently.
This isn't anything complicated and I think it's a viz that provides ever so slightly more context than Strava. Click on the image below for the interactive version.
January 12, 2018
Visualizing 854 Strava Runs
Before Christmas, Chris Love sent me this tweet to check out:
Uh...HELL YES I want to create this. Chris suggested recreating it in Tableau, which I plan to do next week The Information Lab France. In the meantime, I decided to follow the simple instructions that Marcus posted on github.
The vizzes are built using using rstats and ggplot.
I ran into a few errors at first; upgrading my version of R was all it took to make them go away. The processing is super fast and the outputs are really, really cool. You also have the option to customize the size of the viz. I'm thinking of getting these printed as posters.
Here are the routes of my 854 runs from 2013-2017 as small multiples.
And here are all of the runs I've done around London.
Another really fun couple days learning. Now that I understand how all of this works, it should make prepping the data in Alteryx and creating the viz in Tableau significantly easier.
— Marcus Volz (@mgvolz) December 23, 2017
Uh...HELL YES I want to create this. Chris suggested recreating it in Tableau, which I plan to do next week The Information Lab France. In the meantime, I decided to follow the simple instructions that Marcus posted on github.
The vizzes are built using using rstats and ggplot.
I ran into a few errors at first; upgrading my version of R was all it took to make them go away. The processing is super fast and the outputs are really, really cool. You also have the option to customize the size of the viz. I'm thinking of getting these printed as posters.
Here are the routes of my 854 runs from 2013-2017 as small multiples.
And here are all of the runs I've done around London.
Another really fun couple days learning. Now that I understand how all of this works, it should make prepping the data in Alteryx and creating the viz in Tableau significantly easier.
May 3, 2017
What did it take to get to the Madrid Marathon?
Alteryx
,
Information Lab
,
Madrid Marathon
,
map
,
routes
,
RunKeeper
,
running
,
statistics
,
strava
,
tableau
,
TomTom
,
web data connector
No comments
My TomTom watch syncs to both Runkeeper and Strava, both of which I used to visualize my 16 week training program.
The routes for each run are in the form of GPX files, with a data point for every second of the run. I created this Alteryx workflow to parse those files and create the routes I needed to visualize in Tableau.
When designing the dashboard, I wanted the focus to be on the map, so I allocated the most space for that. I used the Mapbox Outdoor theme map because it's very similar to what Runkeeper uses. I made the lines red so that they stand out against the map and then added indicators for the start, end, and each mile.
Above the map, I wanted to display the stats for each run (from Strava). I added a calendar on the right to show the frequency of my runs (I must admit I'm pretty consistent). The user can click on a date to see the details and map for that run.
Lastly, I added elevation and pace charts. I'm not all that pleased with how these turned out, but it'll have to do.
So that's about it. 16 Weeks | 64 runs | 528 miles - that's what it took to get to the Madrid Marathon.
November 24, 2016
From London to New York in 500 miles | My New York City Marathon Training Visualized
Just about three weeks ago I ran my second ever marathon, and it sure was a big one! In fact, the New York City Marathon set a world record for the most marathon finishers: 51,388 finishers, 51,995 people started, a 98.8% completion rate.
Like most runners, I love my running data! My watch syncs to Tom Tom, Runkeeper, Strava and Nike+. Why all of them? Well, why not? Naturally, I wanted to see how my training went. Was it effective? How'd I do in my long runs? How often did I run? What was my average pace? The questions are endless.
I'm also in the middle of testing a new Web Data Connector for Strava that brings back A TON of information about each run. Mix all of this together and you get a dashboard of my marathon training.
Click on the image for the interactive version (it's too wide for my blog). Once you're there, you can click on any activity and see the map update with the route of each run. The activity will also be highlighted across all of the charts.
And yes, I got the data from Strava yet I'm using Runkeeper colors. I simply like their colors better. Enjoy!
Like most runners, I love my running data! My watch syncs to Tom Tom, Runkeeper, Strava and Nike+. Why all of them? Well, why not? Naturally, I wanted to see how my training went. Was it effective? How'd I do in my long runs? How often did I run? What was my average pace? The questions are endless.
I'm also in the middle of testing a new Web Data Connector for Strava that brings back A TON of information about each run. Mix all of this together and you get a dashboard of my marathon training.
Click on the image for the interactive version (it's too wide for my blog). Once you're there, you can click on any activity and see the map update with the route of each run. The activity will also be highlighted across all of the charts.
And yes, I got the data from Strava yet I'm using Runkeeper colors. I simply like their colors better. Enjoy!
October 14, 2016
Join us at #RunData16!
For the past few Tableau Conferences, members of the Tableau Community have come together for some early morning running. Last year, as you can see above, we had an incredible turnout and we expect this year to be much more of the same.
Details:
- When: 5:30am Mon, Tue, Wed
- Where: Four Seasons
- Distances: 5K and 10K (easy enough to make longer or shorter if you'd like)
- Run leaders: Eva Murray, Paul Chapman, Me
- More info on Strava
Yes, a 5:30am start time is early, but in our experience, you HAVE TO start this early if you want time to make the keynotes. Running people are a weird bunch anyway, so 5:30 is never too early for us!
The run leaders will have high visibility bibs and torches for everyone's safety. If you have lights, bring them along. I've run these routes many times and it's a beautiful trail along the river. There are always tons of runners out and about.
NOTE: You may see a meetup list on the conference website, but it doesn't start until 6:30. If you go to that one, you have very, very little chance of making the keynotes. Plus, most of the runners will be at our run. And we'll be done before they even start!
Tableau has informed us that they will not be supporting us this year. However, keep up with the #RunData16 hashtag on Twitter for all of the latest information. See you in Austin!
May 29, 2015
Dear Data Two | Week 6: Physical Contact
Alteryx
,
Dear Data Two
,
elevation
,
exercise
,
map
,
physical contact
,
routes
,
steps
,
strava
,
workflow
No comments
What an amazing week for me for Dear Data Two! The topic for week 6 physical contact and I've been learning Alteryx. The first thing I thought of was physical activity, not physical contact, so I emailed Jeffrey and asked him if he was ok with me taking such liberty on the topic. Fortunately Jeffrey was ok with my idea, but then I decided I could stick to the original contact by extending my thinking a bit.
I'm a huge quantified self data collector, which you'll likely see throughout my Dear Data Two work. I wanted to see how I could use Alteryx to help me get the data into Tableau for analysis before creating my analogue version because I feel like the best way to learn a new tool is to find a practical application. This is the first workflow I built on my own in Alteryx. It might not be the most elegant or most efficient, but I sure did learn a lot along the way. You can download this workflow here.
One of the things I have started to like the most about Alteryx is that I can push all of the complicated row level calculations that I used to do in Tableau to Alteryx, which in the end makes Tableau much faster. For example, I used to multi-row tool to calculate the distance between two geographic points recorded by my watch.
From there, I created the dashboard below to explore the data. In particular I wanted to view the maps and see the summary stats. One thing I learned is that I need to figure out a way to account for times that I paused my watch; that data doesn't appear in the GPX files.
Exploring the data Tableau helped me quantify my runs for the week, but that didn't account for all of my physical activity for the week. To capture ALL of my activity:
That resulted in this draft, which is sort of like a dot matrix:
I'm a huge quantified self data collector, which you'll likely see throughout my Dear Data Two work. I wanted to see how I could use Alteryx to help me get the data into Tableau for analysis before creating my analogue version because I feel like the best way to learn a new tool is to find a practical application. This is the first workflow I built on my own in Alteryx. It might not be the most elegant or most efficient, but I sure did learn a lot along the way. You can download this workflow here.
One of the things I have started to like the most about Alteryx is that I can push all of the complicated row level calculations that I used to do in Tableau to Alteryx, which in the end makes Tableau much faster. For example, I used to multi-row tool to calculate the distance between two geographic points recorded by my watch.
From there, I created the dashboard below to explore the data. In particular I wanted to view the maps and see the summary stats. One thing I learned is that I need to figure out a way to account for times that I paused my watch; that data doesn't appear in the GPX files.
Exploring the data Tableau helped me quantify my runs for the week, but that didn't account for all of my physical activity for the week. To capture ALL of my activity:
- I noted my total daily steps from Fitbit.
- I calculated the number of steps for my runs by taking my stride rate of 184 strides per minute from TomTom and multiplying by the minutes I ran in Strava.
- I subtracted my running steps from the total steps to get my walking steps.
- I used the time of day that I ran and roughly calculated the proportion of walking steps before and after each run each day.
That resulted in this draft, which is sort of like a dot matrix:
For the final version, I colored the dots: Blue dots represents 200 steps walking and red dots indicate 200 steps running. I rounded the numbers for drawing purposes.
You can view the images in the Tableau dashboard above as well, but note that as you're exploring the dashboard, when you click on the tabs that contain images, they will take several seconds to load. I've reported this bug to Tableau.
I really learned a ton this week thanks to Dear Data Two because I found a great use case for Alteryx. Not only did I learned a bunch of Alteryx tools I hadn't learned in the training I took at Inspire15, but I also learned how to do row-level calculations in Alteryx and how those can help Tableau performance.
Subscribe to:
Posts
(
Atom
)