As usual, I was starting my day with XKCD, when I read this gem:
This is great and all, but why isn’t there a panel for tennis players? After all, they have a ranking system that makes it pretty easy to see who the dominant player is at any given time. First, I was stoked to go plot it, then I was bummed because it wouldn’t look as cool as the XKCD plot. But then I remembered that Jake, being a scholar and a gentleman, wrote code to make XKCD-style plots with matplotlib!
Thus, I proudly present the men’s tennis dominant players over time, XKCD style:
Some notes about how I made the plot:
- I only scraped data for the top 100 players (from here).
- I’m only including players who held the #1 ranking for at least 52 weeks (need not be consecutive). So no Patrick Rafter (who was number 1 for only one week).
- Starting in 1990, I have listings for the actual point values in the rankings, so I gave the top ranked players a bonus based on their lead over the #2 ranked player. The top players rank was computed as 2-points_1/points_2. So if the top player has double the points of the #2 ranked player, I would plot them at zero.
- I truncated the curves at the spot where players played their last match (they are still technically ranked after that, but the curves just decay away).
- Player names start at the point where they first reached a #1 ranking
Some cool things you can see in the plot:
- Agassi rose to #1 from being out of the top 10 THREE TIMES.
- Lleyton Hewitt has had an amazingly long (but not particularly impressive) post-number 1 career. But he did just win a tourney.
- Nadal SHOT up to the #2 spot, and then was just parked behind Fed for a looong time.
- Sampras and Edberg both managed to stop playing ranked #14. The rest dropped out of the top 20.
- Sampras was the only one to finish on a win (The US Open).
- Federer wasn’t just #1 for a long time, he was #1 with a huge points lead for a long time.
Next up, I clearly need to plot the women. I’d like to do both singles and doubles to show Martina dominating both simultaneously. If I get motivated I’ll put the code on github in the hopes that someone else will help beautify it a bit more.