It’s been a while since I last ventured into the world of animated GIFs, but the latest thing I wanted to try visualising seems to lend itself well to a simple animation.

You may remember that I took a look before Christmas at how each club’s record would have placed them in previous seasons. Seeing as I had 20 seasons of week-by-week data lying around, I wanted to see what else I could do with it.

What I’ve done (feel free to scroll past this)

First of all, I aggregated the week-by-week progression of each team to finish 1st, 2nd etc with the idea of benchmarking each club’s points tally this season against it. While this doesn’t “prove” anything it sets a useful precedent: for example if your club is currently trying to stay afloat in League 1, knowing how many points that teams who escaped relegation tended to have at this stage of the season provides a comparison that will help you assess the size of the task ahead.

Carrying this specific example forward, the green shaded area in the graph below shows the spread of points won after each match by the sides that ended up finishing 20th in League 1:



So the green area is the path that a team that ends up finishing 20th tends to cut through League 1 over the course of a season. Therefore if your club is currently in the white area below the green band, then they’ve got fewer points than any team who went on to survive relegation in the last 20 seasons, which means it’s time to worry unless they’re likely to have an unusually good second half of the season. Likewise if your club is near the top of the green band, or above it altogether, then there’s much less to worry about.

From the far right side of the graphic we can see that no side in the last 20 seasons has finished 20th with more than 52 points or fewer than 45, but that this spread is a lot wider at the midpoint of a season. At the moment, the average side has played around 24 matches and, looking at the graph, we can see the historical spread at this stage is a lot wider: between 17 and 34 points.

However, every now and again we have a crazy season where an unusual number of teams will do well or badly, so I also wanted to get an idea of what a “normal” season looks like. What I’ve done in this next graph is to highlight the middle 50% of points tallies in a darker green:

This darker band gives us a better indication of how a 20th-placed team would progress in a relatively average season, with the lighter bands on either side showing the more extreme seasons. A good example of this is the way the bottom of the green zone is pretty flat between games 33 and 37 before rising sharply up to game 41. This is down to Notts County in 2013/14, who sat bottom after 37 matches with only 1 point from their last 7 games, but then won 19 from their last 9 to pull away from the drop zone.

While County proved that this sort of “great escape” is possible, such a massive change in fortune is obviously not easy to emulate, so I think it’s right to distinguish between these sorts of scenarios and clubs who rack up points at a steadier and more “normal” rate.

To keep things simple – and visible – I also wanted to narrow the amount of data being visualised. Therefore I’ve decided to only look at the three matches either side of the current stage of the season to start with, and to trim away any superfluous areas of the vertical axis too.

For example, if I were to visualise the current relegation battle in League 1, the red shaded area between the lines in the graph below shows the area I’d “zoom in” on:



Finally on to the GIFs

That’s more than enough explaining, but I wanted to make it clear what I’d done.

For League 1, the three finishing positions that are the most interesting are the last automatic promotion place (2nd), the last play-off place (6th) and the spot just above the relegation places (20th). For each of these I’ve zoomed in on a version of the graph above and plotted each nearby club’s recent progression to illustrate how they’re doing relative to clubs from the past 20 seasons.

The reason for choosing GIFs rather than just overlaying the data onto the red zone above is that a lot of teams have a very similar number of points and it would therefore get quite cluttered. Instead I’ve kept the graph fixed and overlaid separate “frames” for each club’s recent progress, in descending order of their current league position.

Every frame of the animation is generated via code, spat out as an individual PNG file and then combined with the others into a GIF using gifmaker.me.

Where a club’s performance is relevant to more than one race, I’ve included them in both graphs. Inclusion doesn’t necessarily mean that I think a club is going to go down or up; some of them just make for good comparisons. As the season goes on and more sides become less likely participants in the various races, I can see these animations containing fewer clubs, but for now I’ve cast the net fairly wide.

The automatic promotion race

Given that nobody so far is massively outstripping what a second placed team tends to do, I’d conclude that the race for automatic promotion is pretty close. The performances of each of the top four, from Burton down to Coventry, would usually put them on track for an automatic promotion spot, but obviously there aren’t four available.

Sheffield United‘s good recent run has drawn them back onto the fringes of contending for automatic promotion but, given the intense competition, the play-offs may be a more realistic target now.

Bradford, Port Vale and Bury all look to have slipped too far behind after their recent defeats.

The play-off race

While leaders Burton are far from guaranteed automatic promotion, they would require a pretty significant collapse to miss out on the play-offs altogether. Nobody to have finished 6th in the past 20 seasons had a record as good as theirs at this point. Gillingham and Walsall are also performing well enough to be confident of at least a top six finish.

As alluded to in the first graphic, Sheff Utd have drastically improved their play-off prospects in recent weeks, but still have fewer points on the board than the average 6th-placed finishers, so need to maintain their momentum.

Despite flirting with relegation earlier this season, Doncaster are now hovering on the periphery of the play-off picture. However they would still need an unusually strong finish to the season to elbow their way into the top six.

Bury looked like a reasonable bet for a play-off finish a few weeks back, but after a run of five defeats in six this is looking far less likely.

The relegation battle

Bury‘s aforementioned collapse in form has ejected them from the play-off picture and left them alarmingly close to entering the relegation one. Notts County actually had one more point than the Shakers at this stage of last season ended up going went down.

The Martin Ling surge at Swindon looks to have given them a better-than-average chance of avoiding the drop, even with two defeats on the spin.

It looks like it’s also close at the bottom given that 21st-placed Blackpool‘s record would usually keep a side out of trouble.

While Colchester and Crewe had cause for optimism a few matches ago, their poor recent runs have made survival look a lot less likely.

Something else I noticed when I looked at 20th-placed finishes: in 18 of the last 20 seasons, the teams who finished in 20th had either 50, 51 or 52 points: a really narrow spread. The two exceptions were both lower: Oxford stayed up with 45 points in 1999/00 and Northampton survived with 49 in 2001/02.

Next steps

I can obviously produce these for the other two Football League divisions, but I thought I’d see whether people thought they were useful first.

I’m not going to be massively offended if they get a “meh” response because I ended up learning quite a few useful coding techniques while building them, and I had all the source data sitting around anyway.