I’ve gone back over every season since the current league structure began in 1995/96 and aggregated the week-by-week points tallies 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 relegation battle after 24 matches in League 1, the red shaded area between the lines in the graph below shows the area I’d “zoom in” on:

##### Turning this into a GIF

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

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 a season goes on and fewer clubs remain likely participants in the various races, the animations will start to contain fewer clubs.

Continuing the example I’ve used above, here’s the GIF thatI created in 2015/16 from the League 1 relegation battle:

You can see that the axes correspond (more or less) to the red area I “cut out” from the full season graph, and each “frame” of the animation is a colour-coded line showing how many points each club had after a set number of matches. You’ll notice that the lines aren’t all the same length, as it’s pretty common for clubs to have played different numbers of matches at a specific stage of the season.