• Simon Beaumont

Annotated line charts - #SWDChallenge

Updated: Jan 18, 2018

In January 2018 Cole Knaflic started a new, monthly, Story Telling With Data challenge for 2018. January's challenge was to create an annotated line chart.

The simplicity of the challenge immediately appealed to me and I was intrigued by the different approaches people would take to complete it.

My chosen topic

For my submission I chose a subject close to my heart; the changing fortunes of the Portsmouth Football Club, the team I have supported since a child. I visualised the final league positions of 'Pompey' between the 1992/93 and 2016/17 seasons. This was a particularly turbulent period in Pompey's history, the club had multiple owners, won the F.A. Cup and played in every division in English Football.

The challenge I faced

With so many milestones occurring during this period I knew I would be wanting to annotate a high number of season on my line chart. The challenge I faced was to ensure the reader of the visualisation could easily identify the points on the line chart that the annotations related to. I feared that the visualisation could easily become messy or busy if I took the approach of pointing each annotation to the associated point on the line chart with an arrow or connected line.

The solution

I attempted to overcome the challenges I faced by numbering each annotation and then including numbered dots on the line chart that related to each associated season. This would allow the reader to digest annotation 1 and easily identify where on the line chart annotation 1 related to. To ensure the line chart remained clean I only included dots for annotated seasons.

How I did this in Tableau

The technique of making selected dots visible on the line chart was achieved through using a dual-axis chart in Tableau.

My data set already included a field [Commentary?] that identified if a season was to be annotated; this field included a 1 for annotated seasons and null for all other seasons. I created a new calculated field [Commentary bubble] in Tableau that would be used to plot the annotation dot:

[Commentary?]*[Football league place]

By multiplying [Football league place] by [Commentary?] the new calculated field would return a null value for any seasons not to be annotated.

Next I created a dual-axis chart that plotted the [Football league place] measure for the line and [Commentary bubble] for the dot.

Within the marks card I visualised [Football league place] as a line and [Commentary bubble] as a circle. For the [Commentary bubble] circle I added [Commentary bubble] on text to ensure the number of the annotation was visible in the dot.

Acting on feedback

When I first published my #SWDChallenge submission I received a lot of positive feedback. People seemed to like the number annotation approach; in addition to this positive feedback I also received some constructive feedback from people on Twitter that I very much appreciated. Having taken time to digest this feedback I decided to incorporate much of it into a second version of my #SWDChallenge visualisation.

The y axis - Cole Knaflic

Cole fed back to me that it wasn't obvious in my original submission what was presented on the y axis was. Originally, I had taken the decision to hide my y axis and instead include fixed lines that represented where each of the 4 English Football Leagues sat on the visualisation. Based on Cole's feedback I amended the title of the visualisation, by adding 'League positions over the last 25 years', to try and allow readers without any knowledge of English football to understand what I was visualising

In addition I added a brief description on the y axis, 'The 92 club English Football League hierarchy', although the values of the y axis remained hidden.

The x axis - Rodrigo Calloni, Sarah Bartlett and Ramon Martinez

In my original viz I displayed every one of the 25 seasons on the x axis with the format of year/yy (for example 1992/93). Rodrigo rightly pointed out the formatting could be simplified to make the axis cleaner; he suggested xx|yy. I created a new calculated field, [Season shortened] and utilised this for the x axis of the viz:


Sarah and Ramon suggested the x axis could be simplified by not rotating the text and not displaying every season as text (for example a x axis unit of 1 season). My approach to implementing this feedback was slightly different. Unfortunately I could not fit the text when rotated horizontally as opposed to vertically, however, I felt I could improve the viz by highlighting those seasons that were annotated.

To achieve this I hid the original x axis header and replaced it with a second sheet.

On the second sheet I placed season on Columns and then the [Season shortened] calculated field on the Marks card as Text. Finally I coloured the text by the [Commentary?] field. This allowed me to colour the text using 2 shades of grey, with the darker shade being used for annotated seasons.

My completed annotated line chart

You can view my completed #SWDChallenge annotated line chart via my Tableau Public profile:



  • tableau-icon-for-blog

Vizionary was first created in 2018