Verdien geld door onze enquêtes te beantwoorden

Schrijf u nu uit !
De blog van het marketing agentschap IntoTheMinds
Marktonderzoek en ondernemers coaching

Tutorial: een joyplot maken in Tableau

Verdien tot 50€ door deel te nemen aan een van onze betaalde marktonderzoeken.

Schrijf u nu uit !

In een eerder artikel legde ik al uit hoe u een isometrische hexkaart kunt maken; deze keer pak ik een moeilijker onderwerp aan, namelijk het maken van een joyplot in Tableau.
Ik maakte gebruik van een joyplot in de visualisatie die ik indiende bij IronViz. Omdat het hier om een eerder zeldzaam type van grafiek gaat en ik wat moeilijkheden ondervond om het gewenste resultaat te krijgen, dacht ik dat een tutorial wel op zijn plaats zou zijn.

Samenvatting

Wat is een joyplot?

De joyplot (of “Ridgeline plot”, zie oorsprong van de naam in de volgende paragraaf) bestaat uit het verticaal naast elkaar plaatsen van histogrammen, verdelingscurven of tijdreeksen.
op dezelfde horizontale as. van Dit soort datavisualisatie is vooral nuttig voor het vergelijken van statistische verdelingen of het tonen van verschillen tussen tijdreeksen.
Het (afgeleide) gebruik dat ik ervan heb gemaakt in Tableau maakt gebruik van de pieken van meerdere verdelingscurven om de illusie te wekken van een geografische visualisatie. De inspiratie hiervoor kwam van het werk van Alexander Varlamov, van wie ik de tutorial (Engelse site) volgde.

Vanwaar komt de naam joyplot

Het was tijdens mijn onderzoek naar de structuur van een joyplot dat ik de oorsprong van deze naam ontdekte. Konstantin Greger (Engelse site) legt op zijn blog uit dat de naam is afgeleid van de afbeelding op het album “Unknown Pleasures” van de Engelse band “Joy Division” (1976 tot 1980). Mijn gebrek aan “rock”-cultuur heeft ertoe geleid dat ik deze band heb gemist, maar sommige songs zijn toch bekend, zoals “Love will tear us apart”.


De naam “joyplot” verschijnt klaarblijkelijk in 2017 nadat Jenny Brian de naam voorstelde als verwijzing naar het album Joy Division. Er ontstond een polemiek omdat “Joy Division” de naam was die werd gegeven aan groepen Joodse vrouwen die tegemoet kwamen aan de seksuele behoeften van de nazi-soldaten in de concentratiekampen. Daarom werd de naam “Ridgeline plots” voorgesteld. Voor een uitgebreidere discussie verwijs ik u naar dit uitstekende artikel (Engelse site).


Stap-voor-stap handleiding voor het maken van een joyplot in Tableau

Een “klassieke” joyplot in Tableau maken vormt natuurlijk geen enkel probleem. Het wordt pas ingewikkeld als u een afgeleide joyplot wenst om dichtheidspieken binnen een bepaald geografisch gebied weer te geven.
En daar gaat het om in deze tutorial, die u in staat stelt om joyplots te gebruiken om een kaart te maken zoals hieronder.

In de volgende paragrafen krijgt u de volledige uitleg om stap voor stap hetzelfde type visualisatie te reproduceren als hierboven.
Om het principe te begrijpen, moet u in gedachten houden dat er achter dit soort visualisatie eigenlijk een “raster” zit, waarvan sommige punten verbonden zijn met een waarde en andere niet.

Een “piek” wordt alleen weergegeven voor de vierkantjes die verbonden zijn met een waarde (de oranje gekleurde mazen op het diagram hiernaast).

Goed, tijd om aan de slag te gaan.


Stap 1: verwerking van lengte- en breedtegraad

Het eerste wat u moet doen is de geografische coördinaten (breedte, lengte) van uw punten afronden om ze in het raster te passen. Dit vereist eigenlijk een voorafgaande overweging van de “stap” die moet worden genomen. Een te fijne stap kan Tableau doen “afwijken”. Een te grote stap zal visueel geen succesvol resultaat opleveren.
Voor mijn visualisatie van zwaarlijvige bevolking per county in de Verenigde Staten had ik me eerst gericht op een stap van 0,01. Daarmee volgde ik het advies van Alexander Varlamov. Zo’n fijne stap werkt dan wel voor kleine geografische gebieden (bijvoorbeeld een stad), maar niet voor een land dat zo groot is als de Verenigde Staten. Daarom ging ik terug naar een stap van 0,1.

Na het maken van een interne koppeling op de centroïden van elke county, is het enige wat rest het toepassen van een afronding. De resulterende berekende variabelen worden LatRound en LongRound genoemd.

LatRound = ROUND([Latitude],1)

LongRound = ROUND([Lengte],1)

Stap 2: aanmaken van een coördinatenraster

De tweede stap is het “verdichten” van de gegevens in Tableau door het maken van een raster. De coördinaten van de rastercellen worden gebruikt om de waarden van obesitas per county te koppelen.
Om dit raster te maken, maakt u eenvoudigweg een tabel aan in Excel met daarin de waarden van de lengtegraden als rij en de breedtegraden als kolom. Een beetje later krijgt u een tabel als deze. Vergeet niet na te gaan wat de minimale en maximale waarden van de breedtegraad en lengtegraad zijn die u nodig heeft.


Vervolgens maakt u gewoon een koppeling aan de rechterkant van deze Excel-tabel. Met de koppeling aan de rechterkant is het mogelijk om de mazen zonder toegekende waarde leeg te houden.
De breedtegraad- en lengtegraadwaarden van het rooster worden respectievelijk “latitude grid” en “longitude grid” genoemd.

Stap 3: verwijderen van lege punten buiten de geografische zone

In de volgende stap verwijderen we de punten die buiten de geografische zone liggen die we willen bestrijken. Dat is vooral belangrijk als u bijvoorbeeld de grenzen van een land opnieuw wilt reconstrueren.

We beginnen met het visualiseren van rastercellen zonder waarde. Dat kan heel eenvoudig met de volgende berekende variabele.

NullDotCheck = IIF(ISNULL([Obesity prevalence (%)]),TRUE,FALSE)

Met deze berekende variabele als leidraad voor de kleur, krijgen we dit resultaat. De grenzen van de Verenigde Staten beginnen zich langzaam af te tekenen, maar er is nog werk aan de winkel.

Nu elimineren we alle punten die buiten de geografische grenzen van de Verenigde Staten liggen. Dit kan snel via expressies van het type LOD. We maken de berekende variabele “NullDotFilter” als volgt:

[longitude grid]< { FIXED [latitude grid]: MIN({ FIXED [latitude grid], [longitude grid]: MIN(IIF(ISNULL([Obesity prevalence (%)])=false,[longitude grid], NULL))})}

OF

[longitude grid]> { FIXED [latitude grid]: MAX({ FIXED [latitude grid], [longitude grid]: MIN(IIF(ISNULL([Obesity prevalence (%)])=false,[longitude grid], NULL))})}

Zodra de “NullDotFilter”-variabele als filter wordt toegepast, krijgt u (bovenaan) een visualisatie die begint te lijken op de Verenigde Staten.
Onderaan is te zien dat de kaart is gemaakt van horizontale lijnen die op 0,1 breedtegraad van elkaar liggen. Omdat er nog enkele lege rasters binnen het territorium zijn (blauwe stippen op het bovenste deel van de grafiek), moeten deze stippen op de juiste breedtegraadlijn worden geplaatst. Daarom heb ik een berekende variabele “zero data” gecreëerd.

zero data = IFNULL([Obesity prevalence (%)],0)

Nu gaan we naar het leukste, de programmering van de joyplot-“pieken”.

Stap 4: piekhoogte

De berekende variabele “Y” wordt zo gemaakt dat de hoogte van de “piek” afhankelijk is van de waarde die aan elk punt van het raster is toegekend. In mijn geval bleek de oefening ingewikkelder dan verwacht omdat de waarden die ik verwerkte (het percentage van zwaarlijvige mensen per provincie) relatief dicht bij elkaar lagen.

Y = max([latitude grid])+(4 * (SUM([zero data]) / WINDOW_MAX(SUM([zero data]))))

Om de verschillen tussen de pieken kunstmatig te vergroten, heb ik een factor met waarde 4 geïntroduceerd. Hieronder ziet u het verschil tussen een factor 1 en een factor 4.

Vergeet niet de variabele “latitude grid” in detail te vermelden (als discrete waarde).

Toch waren de verschillen niet erg zichtbaar. Daarom koos ik ervoor de kleuren toe te passen in de vorm van kwartielen.

Stap 5: kleuren volgens kwartiel

Om de verschillen beter zichtbaar te maken en de mazen van het raster zonder waarde te elimineren, koos ik voor een kwartierkleuring. Het 1e kwartiel komt overeen met 0 en kan worden toegewezen aan de achtergrondkleur van het dashboard. Ik heb de techniek en de oorsprong ervan al meermaals uitgelegd (bekijk daarvoor mijn tutorial over de isometrische hexkaart).

rank obesity US counties = {FIXED [Year],[County] : AVG([Obesity prevalence (%)])}

rank percentile counties = RANK_PERCENTILE(AVG([rank obesity US counties]))

rank color by quartile =

if [rank percentile counties]<=1/[quantile]

then 1/[quantile]

ELSEIF [rank percentile counties]<=2/[quantile]

then 2/[quantile]

ELSEIF [rank percentile counties]<=3/[quantile]

then 3/[quantile]

ELSEIF [rank percentile counties]<=4/[quantile]

then 4/[quantile]

END

Met de variabele “rank color by quartile” kunnen we onze pieken inkleuren om ze zichtbaarder te maken.


Enkele aanvullende overwegingen over de joyplot

De joyplot is zeker niet de gemakkelijkste visualisatie in Tableau. Het is ook verre van geschikt voor bedrijfsgerichte toepassingen. Maar zoals Alexander Varlamov al aangaf, is het gebruik ervan perfect voor journalistieke doeleinden. De joyplot is inderdaad visueel aantrekkelijk, gemakkelijk te begrijpen en leent zich daarom voor het informeren van het grote publiek.
Voor de efficiëntie raad ik u echter aan om, voordat u begint, na te gaan of de gegevens die u wilt visualiseren zeer verschillende waarden van elkaar aannemen. De beste joyplot krijgt u wanneer er een grote spreiding van gegevens is. Achteraf gezien denk ik ook dat het gebruik van een joyplot voor zeer grote gebieden wellicht minder goede resultaten oplevert. De weergave van uitzettingen op het grondgebied van San Francisco (zie hier, Engelse site) lijkt mij geschikt voor een weergave via een joyplot.

Tags:

Author: Pierre-Nicolas Schwab

Pierre-Nicolas is de directeur van de marketing agentschap IntoTheMinds. Hij heeft speciaal interesse voor e-commerce, retail, HoReCa en supply-chain projecten. Hij is ook een onderzoeker aan de Vrije Universiteit Brussel en werkt ook als coach voor meerde publieke organisaties. Hij verwelkomt Linkedin uitnodigingen : gelieve gewoon een paar woorden toe te voegen en uit te leggen waarom U wilt connecteren.

Share This Post On

Submit a Comment

Your email address will not be published. Required fields are marked *