FanGraphs Feature Focus: WAR Graphs

Today’s Feature Focus covers WAR Graphs, a quite underutilized tool in my opinion. (We’re called FanGraphs after all, and this is a Graph that you can make, as a Fan.) The tool is accessed near the bottom of the Leaders menu, under WAR Tools:

That’ll send you to this landing page, a blank canvas for adding players:

After selecting players, you’ll be welcomed with three graphs: nth Best Season, Cumulative WAR by Age, and WAR by Age. The view defaults to showing all three, but you can toggle at the top:

Let’s dive into each graph.
For the sake of demonstration, I chose just three players to walk through the three generated graphs: Bobby Witt Jr., Cal Ripken Jr., and George Brett. You can choose as many players as you’d like, past and present, though the color-coding starts repeating itself with the ninth player, so for that plus overall readability, I wouldn’t recommend selecting more than eight. The tool also doesn’t combine hitter and pitcher WAR; Shohei Ohtani is shown as a hitter.
nth Best Season

This first graph rearranges all of a player’s seasons from best to worst, so naturally the lines will each trend downward as you look from left to right. The graph works really nicely for comparing careers of similar lengths — Ripken and Brett each played 21 years and each had 19 positive-WAR seasons — but it also helps to show that Witt’s best couple seasons line up quite favorably with the finest that Ripken and Brett had to offer. With fewer seasons of elite production (and fewer seasons overall, of course), Witt’s line will have a steeper slope, illustrating how much he has to accomplish to be in the ballpark of the long, elite careers of the two Hall of Famers.
Cumulative WAR by Age

As Jon Lovitz would say: That’s the ticket. (Yes, all my references are dated.) This is my favorite of the three graphs, especially when combining active and retired players as I’m doing here. This graph further hammers home that Witt’s career is nascent relative to the multi-decade staying power of Ripken and Brett, but by ordering chronologically by age rather than from best to worst, it’s clearer to see that up to this point in his career, Witt in fact compares quite favorably to Ripken and Brett, especially considering Witt’s age-26 season isn’t yet halfway complete. Hovering over a spot on the line allows for exact numerical comparison:

Despite debuting in his age-22 season, two years later than Ripken and Brett, Witt should pass Brett in WAR through their respective age-26 campaigns and be within shouting distance of Ripken.
WAR by Age

This is simply the disaggregated version of the prior graph, with each season shown independently rather than being added into everything the player had done in his career prior to that season. This graph is ideal for comparing best and worst seasons by age, as well as offering an idea of the trajectory of a player’s career. For example, it’s easy to suss out from this graph that Brett aged considerably more gracefully than Ripken, whose last four-win year was his age-32 season, while Brett had a couple more after that age. Witt’s graph looks strikingly similar to how Ripken’s career began, just shifted over a year in age.
If you’re a Member, all three graph types are exportable as a PNG or directly copyable into your clipboard for easy posting onto social media or into a text to a friend you’re trying to win an argument against, one of the most righteous uses of any FanGraphs tool. You can become a Member and access those perks here.
Jon Becker manages RosterResource's team payroll pages, assists with all other aspects of RosterResource, and also dabbles in creating new features as a Junior Developer. Follow him at your own peril: @jonbecker_ on Twitter and @jon-becker.com on Bluesky.
Thanks for this series. It is helpful to learn about features in bite-size pieces.
seconded, this is a great series! thanks for writing this
Good god, y’all.
I would love to have a version of this for counting stats other than WAR. I wanna be able to look at guys and see what pace they are/were on. Which all-time greats was Mike Trout keeping up with in HR before he got hurt? How much ground was Ichiro gaining in his 30s on hits leaders? How much of a strikeout head start does Skenes have on recent HOFers? A drop-down menu of something similar to choose which counting stat is being visualized would be super fun.
Fun stuff- I ran it with Pujols, Cabrera, Murray & Palmeiro
Nth season- Pujols has the 10 best seasons, Cabrera is 2nd for the all of the 10 best seasons & has the best 11th best season..but, then Murray & Palmeiro have a bunch of 2-3 win seasons from season 12-20 & go back & forth leading those as Pujols & Miggy crater.
Cumulative WAR- Pujols jumps ahead & stays there, but, flattens out in his early 30’s. Miggy is clear 2nd most of his 20’s & into 33-34 season, but, is then caught by Murray at age 36-37 & then by Palmeiro at age 38-39.
One idea- You need negative war on the vertical axis to account for those bad years.
This could just be my browser or settings or theme or screen resolution, but when I highlight the “Leaders” menu at the top of the page, it’s not obvious I can scroll down within that menu since none of the other menus act like that. I honestly don’t know how to scroll down within that menu other than the mouse scroll wheel!
Again, apologies if this is a “me” thing, but maybe adding a scroll bar on the side of that menu when it appears would make it more obvious there is more to see? Or it might look awful, I’m far from a UI guy, but throwing in my 2 cents.
“or into a text to a friend you’re trying to win an argument against”
This writer knows his audience!