Viz For Social Good - Part 3, The Design

 This blog is going to centre around a recent visualization of mine and why and how I created it.

The visualisation this blog will cover

Before starting this blog post I reached out to ask the community if there would be much interest in writing this blog.  The response was a resounding ‘yes’ but it was also clear that not only should I provide a detailed guide on ‘how’ I built this visualization, but more importantly ‘why’ I came to my design choices.

To make this more accessible I have decided to split the blog into three separate blog posts and avoid creating one mammoth length of text that every gives up reading halfway through!

Previous blogs:

Part 1 - The Why

Part 2 - The Build

This blog is Part 3 - The Design

This is the third and final installment in my three-part blog series focusing on the above visualisation for Viz For Social Good.  This is third installment I will attempt to explain how I put the finishing touches on the main radial and why I chose what I did.  I will also go over the final viz composition and the design choices there.

The Radial

In the last blog post I wrote about my process and method for building the multi-layers radial chart in a single sheet in Tableau.  The building of that chart was where I left off and here we pick up the formatting required to turn it... 

...From this, to this!

Obviously the image on the left has had nothing much done to it in terms of formatting, and it is poorer for it.  The marks all merge together, you cannot discern any pathways round the circular sankey in the middle and you certainly cannot see the Project / Charity circles in the inner ring (shown in white on the image on the right).  

In the first blog in this series, I also wrote about one of my inspirations for this visualisation coming from outside the Tableau community and in particular data professionals such as: Nadieh Bremer, Federica Fragapane and Valentina D'Effippo.  What I particularly enjoy from their work is how they seem to create a 'textural' form to their visualisations - and it was something I was hoping to replicate or take inspiration from in this viz of mine.  

How do I go about that?

There are three key things that need to adjusted to get this correct.

1) Opacity

2) Size

3) Colour


Opacity is where I started with my radial finessing, with that 'textural' goal in mind.  The issue with opacity when at 100% is that when marks / lines overlap each other you loose the ability to track them because they all merge into a singular mess.  Normally we would use colour as our distinguishing element, but here I not only used colour but also opacity.  

Switching opacity to a value very low, like 20%, allows both marks behind and in front to show up.  What works well in this case is the fact there is a high density of lines crossing each other from the circular sankey.   This produces pockets of intense colour where a high number of marks / line overlap.  This overlapping and changes in colour intensity combine to give the visualisation 'depth; and produces the 'textural' feeling I was looking for.


The next area that really needed attention was Size of the marks.  The issue here was a consequence to the way I build the main radial.  Creating the multi-stage radial using a single worksheet in Tableau determined that all the marks plotted were using the Tableau Line Mark.  Changing the sizing on this impacted all the different elements of the radial, so the inner circles, the circular sankey lines and the radial bar chart on the outside and more.  If you were to look at the above Opacity images again, you will notice that the size of the line marks used resulted in the inner circles showing as very tiny dots.  What I actually wanted to do with the radial design was to encode the inner circles for Project / Charity for size using the number of viz entries for that Project / Charity.   In order to enable me to control the size of the marks for each stage of the radial I needed to write a custom calculation based on the [T] Value from the densification Data Model.  This would allow me to isolate the [T] Value for each plot in the radial and define what the size of that stage (or Mark) should be.

This was the calculation I wrote, with [Separator] the field that refers to the [T] Value of the Dat Model:

Essentially what I was looking for here was to ensure any sankey lines or bar lines were the minimum of thickness, to help lighten the visual and to avoid thick heavy lines that merge into one.  These were "chord", "chord 2" and "bar", they were simply set the value of 1.  Then I was looking to size the circles at either end of the circular sankey by the number of records each had ("start point", "end point" & "start point2").  All of these required a LOD calculation, which was to ensure the correct value from the respective Count field was pulled in.  For "end point" and "start point2" it was the number of vizzes each volunteer had created - these were the circles either side of the joining straight line.

An aside.
The joining straight line between the two circles for the same volunteer wasn't in the original plan.  Originally I had planned to leave a space between the two circles so I could place the EVER volunteer name aligned between the two circles.  This would have been produced with via a background image made with Adobe Illustrator.  While it could have been done and would definitely been time consuming for all 300+ volunteers, I was prepared to do it.  However, I quickly realised when I started to create the radial in Tableau, that for the names to be legible to the normal reader, I would have had to make the viz unbelievably big in dimensions.  So big the reader would then have to scroll to see each part of the radial.  I didn't want this, as it would numb the effect of the visualisation and would have been very difficult to consume.  So it wasn't a compromise I was prepared to take.  I decided to keep the viz small enough to read on a standard laptop setup and later I would highlight / call out the top volunteers who has contributed the most (in terms of visualisations) to Viz For Social Good (VFSG).  Which left me with a gap between the two circles.  So naturally I joined the gap with a line to keep the flow from inside and out connected.

Back to the size 
The other [Separator]s of note are "end point2" which is the base of the bar chart, these show up if a volunteer has produced more than one viz for VFSG and therefore this was set to the value 2 (I required an LOD to make this work).  The other was "single point" and this was set to value 0, so it would be the smallest mark on this radial - why?  Well "single point" would actually be covered using a dual axis, which has a slightly adapted Size calculation and as such I didn't want these points on the first axis to be noticeable, hence I reduced them to nothing.  

The calculation for the dual axis, is as follows (with the differences shown in red text). 

Notice how "single point" is now value 4, so much larger.  This was because I wanted the marks to show up in this axis.  The dual axis was build to plot lines to go round the radial rather than from inside to out.  This is why "end point2" is also 4 in size (remember that is the base of the bar chart).  The other differences are for "start point", I was multiplying the result of this by 1.5 and that was because at the time I was experimenting in making the Project / Charity circles in the inside of the radial a two tone circle, with a slight border around them (using this dual axis sizing). The other difference is to ensure anything that is not specified in the calculation to be given a value of 1, so to ensure they don't show up.

This is the result of  adjusting the size of your marks, you achieve a much more finessed result:


There is no doubt about it colour can be difficult. 

If you do not have a brand to follow or a clear visual in your head with where you want to end up then choosing colours can be tricky.  I had neither of these when I started.  In fact I did reach out to the VFSG team and ask about their brand, for this very reason.  It is much easier to follow an already established colour palette than to create your own. Sadly though I wasn't given such a palette to work with.  I also did not have a clear idea with where I was going to end up with the colour, so I decided to let it happen organically - meaning, I would first attempt to build the viz in tones of grey and then decide what works best.

To begin with I decided to make the call on whether the visualisation would be set on a light background colour or a dark background.  I actually have no preference on light or dark backgrounds and in my personal vizzes I try to mix it up, to give myself as much practice with both style as possible.  I even occasionally use bold background colours.

What I found when considering this was I really liked the light background version, but the I was conflicted with keeping a soft tonal, depth to the viz and actually having the marks standout well enough from the surrounding background colour.  With the light background I didn't find I could have both, there was always a trade off - darken the lines to help them show up but lose the soft tonal feel of the piece.  

Whereas in the dark background version I felt the lines stood out well and still there was the textural element I was looking for.  This was all decided using shades of grey as per below.

After settling on working with a dark background I saw I had a few options open to me for adding colour to the actual radial.

1) Apply colour around the radial (as in clockwise).  I'm not sure what analytical benefits this would of had, I certainly couldn't see any.  

2) Apply colour from in to out (as I have done).  This made much more sense, using the [T] Value I could then apply colour to the different sections of the radial, helping them stand out from each other.

3) Use a distinct palette.  This would certainly help make the different sections of the radial stand out even more, but when exploring the option I didn't like the result.  It felt too much, too sectioned. 

4) Use a continuous colour palette ( as I have done).  A continuous palette made much more sense from the perspective of 'flow'.  The colour connection would flow through the lines from centre to the outside of the radial.  However there is a tricky element here, making the sections stand out from each other.

So I chose to apply the colour from inside to out and to use a continuous colour scale. What I needed to be aware of at this stage was that I was using an opacity of 20% already to create depth to my lines and visual.  This is important to note, because the 20% opacity will cause my colours to become washed out in all but those areas of overlap. 

With that in mind I decided it would be a good option to choose a vibrant set of colours, these colours could be seen even when set to a single mark, but would also really 'pop' when applied to a marks layered over each other. 

So where did I start when choosing a palette?  

I am not someone that likes using recognised colour palettes such as Magma or Vidiris.  I like to create my own combinations.  I will often go to Adobe Illustrator and work with applying gradients of various colours or adding colour palettes to my Adobe Library using Adobe Capture.  Here though, I wasn't sure how the colour would react to all of the above design elements (opacity, layers, sizing, background shade with the opacity), so the best way was to just dive in.  So I started to apply colour palettes that were already within my Tableau Preference file and recorded how the colour reacted to being applied to the radial.

From my colour palettes I already had at my disposal, I knew I needed to select palettes that have more than one colour to them, rather than a sequential palette going through various shades of the same colour.  Flowing between different colours would allow me to try and line up the colour with a particular stage of the radial and therefore distinguish that from the other stages - sequential shades of a single colour wouldn't give that effect.

So here are a few test colour examples that I tried and took screenshots of during the process.  The bottom right radial is actually the colour palette I chose to use in the final viz.

There were elements of these palettes that I liked and elements that I didn't and I started to play with mixing the palettes.  This is why we can see radials 3-6 all have the same circular sankey section colour (light blue (actually white start to blue end).  I was adjusting the palette to bring in different colours to work with that light blue.  In these series of screenshots you can see the progression of how I developed the final colour choice.  I was particular interested in ensure that each section of the radial was presented with equal visual weight, so no single part dominated over the others.  

The end result was a colour palette that starts with White, transitions to light blue, transitions to green and then to a golden yellow.  The Follower data points plotted by the dual axis were a pink, to stand out from the rest of the design.  This colour transistion provided a flow from inside to out but also showed the different sections of the radial.


I now have my radial design practically finalised, but there is one key element missing from the whole chart and that is making it readable and more accessible.  To do that I had always planned on making the radial interactive.  The idea being that if a reader wanted to know who worked on a particular project, or what vizzes where created for that project, then they could select the Project / Charity circle and it would highlight all the lines corresponding to that Project / Charity.  The same would be if the selection was on a particular volunteer, it would highlight their vizzes and which projects they worked on.  

Sounds straightforward enough, right?


Normally in Tableau we would use a distinct colour palette that would allow us to choice a highlight colour for the selection and everything else would be a shade of grey.  I cannot do this with my radial because I would lose the lovely colours I have worked on above.  Ideally what I wanted to achieve was the selected mark/s would keep their continuous colour scale and anything else a slightly lighter shade of the background colour, so they still show but are pushed to the back visually.

This was what I did:

The result wasn't quite perfect and that was a consequence of altering the non-selected colours, which resulted in the dulling of the selected marks due to the opacity setting of 20%.  With no way of altering the opacity through a calculation I decided this was as good as I would be able to make it.

Question, So how did I make the non-selected marks lose their colour and keep the continuous palette on the selected marks?

Answer, I wrote a calculation based on the [T] Value, that would control the colours depending on the selection made and anything not selected would be given a value that was beyond the [T] Value range and then added an additional colour to the continuous palette I was working with.

This was my calculation:

The [Choose highlight] field is a parameter that updated from selecting an additional control I put on the viz via a parameter action.  This determined if the user wanted to highlight for a Project / Charity or a individual Volunteer.

The selection on the radial by the user then updates TWO sets.  One for the Project / Charity and the other for the Volunteer.  

The calculation above is simply looking to see if both the [Choose highlight] parameter and the appropriate SET are both True.  If they are then assign the [T] Value (via an LOD) to the colour.  If the condition is False then give the mark the value of 19.2.

19.2 is the value I calculated to put the non-selected colour against, the grey colour that was added to the continuous colour palette. 

Why so specific as 19.2? - I'll explain in a moment.

Firstly, this was the colour palette as seen in Tableau.

Did you notice how the Colour Card at the top was much lighter than when it is opened to 'edit' the Colour palette?  That is because the Colour Card is showing the 20% opacity version of the palette, and the 'edit' screen is showing its true colour.  I spoke about how I needed to work with a vibrant colour palette - this shows exactly why.

To create that palette I created this custom code in the Tableau Preference file:

Before adding my grey (#4a4e5e) to the continuous colour palette, I decided I needed to give a buffer between that grey and the gold (#ffc300).  This was to avoid the grey from impacting the gold colour (due to the transition between them) and so I replicated the gold three more times (hence, why #ffc300 is repeated in the image above).  The problem with adding the grey and replicating the gold, meant that I needed to be certain of my scale (Max and Min) so that the newly increased colour palette would keep the original first four colours in the correct positions when displayed on the radial.  To do this, I needed a little maths.

The maths
  • The first 4 colours originally covered 11 [T] Values
  • Giving 2.75 [T] Values per colour (11/4)
  • I have added an addtional 4 colours to the palette
  • This gave me 8 colours covering the 11 [T] Values
  • Which gives an end value of 22 (8*2.75)
  • However, with the first [T] Value starting at zero
  • I need to recalculate the end value
  • With an end value of 19.2 (7*2.75, ignoring rounding).
Essentially, that spaced out the colours across a scale that kept the integrity of the original radial palette, but allowed for another colour to be selected from the palette and used separately.

I then created a second colour calculation, to do a similar think for the secondary axis - the pink Follower lines round the radial, and the gold lines for the volunteers with multiple vizzes.  This time I could work in a discrete palette and it was much easier!

Here are the calculations.

//LinePathColour is ascertaining which [T] value we really want to colour on this axis. (note: "Light" is for the pink colour).

And that, as they say is that - for the radial.

Next I will briefly go through the overall design / composition.

Background & Annotations

In building out the overall design and composition I moved away from Tableau and into Adobe Illustrator (my design tool of choice).  Illustrator would allow me to place labels exactly where I wanted them and with the orientation I required.

To begin with I actually placed a gradient mask behind my radial.  You can see in the image below how subtle the gradient is (note only the radial has been reduced in opacity, the annotations and gradient are unaffected).

The gradient mask was actually build with a 100% transparent centre and moving out to a darker overlay on the outsides.  I did it this way to preserve the background colour behind the radial itself, so the colour for the radial is unimpacted.  But why was I applying this gradient.  This was my way of trying to subtly draw the readers' eye to the radial and away from the edges.  It also has a nice impact of helping to make the additional elements around the radial (explained below) just pop a little more and make them easier to read.   

The annotations were placed to call out those Volunteers that contributed to VFSG the most, so celebrate those people.  

Inside the radial I was able to place angled text to explain what each Project / Charity circle represented, but doing so without really detracting from the radial itself.

This was all build into a single PNG image that was placed behind the Radial in Tableau.


In Part 1 - The Why, I wrote about having to open every single visualisation built for Viz For Social Good - over 500 of them!  That was inorder to build in data about viz views.  As I was going through that process, I noticed something interesting, so many of the visuals were making use of BANs (Big A** Numbers) or KPIs.  The very best vizzes were using these KPIs as a real intro into the project and this inspired me to do the same.  So I looked through the data set I had compiled and drew out some key stats.  I then build the KPI dashboard as a flat image using Adobe Illustrator because it gave me more control than Tableau and it wasn't going to be interactive.  All copy was build using a single font and minimal variations on that font (size, caps, italics).  I brought in colour to the KPI's to line up with the radial section they belonged with, so matching the Hex Code for each.  

The font was chosen simply using the 'Viz for Social Good' label across a whole range of different font options and I placed each onto the Viz, to see how I liked it and what 'vibe' it gave the viz.  In the end I settled on Lora - a typeface that is not too bold and in-you-face, one that has sweeping curves to it that would mirror the sankey lines in the radial but also not too stylised, and was clear and easy to read.

'How to Read' section

One element of the overall composition I knew I needed to include was a clear 'How to Read' section.  One of the main reasons to include this was because I wanted to ensure that the flat image was readable without the interactivity.  So as a poster image this viz could stand by itself and the reader would have some understanding of what was happening. It would of course be helpful to those interacting with the viz via Tableau Public as well.
The build of this How to Read section was entirely using Adobe Illustrator.  Without going into the 'how' in this blog (because I've written enough already!), I will try to explain in brief what I did.
For a visual so complex as the radial I felt the only way that would really help facilitate understand would be if I isolated sections of the radial and wrote about what each was showing, keeping the colours etc as they show in the main viz.  
I could have tried using Tableau for this, but it would have required a custom colour palette for each stage, and some more Maths to ensure the correct colours where show where required.
It was much easier for me to take the image of the main radial and bring that ("place") into Adobe Illustrator.  I was then able to work the image in Illustrator by converting it into Paths to isolate the sections I needed.
This kept the colours true to the original radial and allowed me to write about each stage.

Putting it all together

This is the final result of the trilogy of blogs from the Why, the Build and the Design.

Thank you all for taking the time to read this!  Please feel free to reach out to me in the comments below, or via my Twitter (@sparsonsdataviz), if you have any feedback or questions.

I hope you found this trilogy of blogs inspiring and helpful,

Stay safe folks,



  1. Hi Sam,
    Great job, thank you for sharing this!
    Do you think you could share Excel file, just like CJ Mayes did?

  2. Customer support staff by way of Live Chat or email and the friendly workers on the high NetEnt casinos will present help. To make it simpler for players to get started, we make sure that|be positive that|ensure that} the registration course of is easy and fast. Alex is an experienced iGaming writing, having labored in the business since 2015. He covers all elements of iGaming, 바카라 사이트 with a particular interest in sports.

  3. Hi Sam, I connected with your work through your resume on the Tableau Interactive Resume site. Your job history is inspiring! I'm thinking of making a similar transition from data analytics to data visualization. While looking at your great work, I thought to myself more than once - I wonder how he did that. It turns out I didn't have to look far for the answer! Thanks for writing this out in detail. - Patricia


Post a Comment