2 Ottobre 2020 1401 parole, 6 lettura minima Ultimo aggiornamento : 28 Settembre 2021

Tutorial: come creare un Joyplot utilizzando Tableau

Di Pierre-Nicolas Schwab Dottorato di ricerca in marketing, direttore di IntoTheMinds
Dopo aver spiegato come creare una mappa esametrica isometrica, affronto ora un argomento più difficile: creare un joyplot utilizzando Tableau. Ho usato un joyplot nella visualizzazione che ho inviato all’IronViz. Poiché questo tipo di grafico è relativamente raro e ho […]

Dopo aver spiegato come creare una mappa esametrica isometrica, affronto ora un argomento più difficile: creare un joyplot utilizzando Tableau.
Ho usato un joyplot nella visualizzazione che ho inviato all’IronViz. Poiché questo tipo di grafico è relativamente raro e ho avuto qualche problema a farlo bene, ho pensato che un tutorial sarebbe stato l’ideale.

Sommario

Cos’è un joyplot?

Il joyplot (o “Ridgeline plot”, si veda l’origine del nome nel paragrafo successivo) è costituito dalla giustapposizione verticale, sullo stesso asse orizzontale, di istogrammi, curve di distribuzione o serie temporali.
Questo tipo di visualizzazione dei dati è particolarmente utile per confrontare distribuzioni statistiche o mostrare differenze tra serie temporali.
L'(abuso) che ne ho fatto in Tableau utilizza i picchi di più curve di distribuzione per dare l’illusione di una visualizzazione geografica. L’ispirazione è venuta dal lavoro di Alexander Varlamov, di cui ho seguito il tutorial.

L’origine del nome “Joyplot”

È stato durante le ricerche sulla costruzione del joyplot che ho scoperto l’origine di questo nome. Konstantin Greger spiega sul suo blog che il nome deriva dall’illustrazione contenuta nell’album “Unknown Pleasures” del gruppo inglese “Joy Division” (attivo dal 1976 al 1980). Nonostante non sapessi molto di cultura “rock” le melodie di questa band mi erano comunque note: “Love will tear us apart”.


Il nome “joyplot” sembra apparire nel 2017 dopo che Jenny Brian ha suggerito il nome in riferimento all’album dei Joy Division.

Ne seguì una mini polemica perché “Joy Division” era il nome dato a gruppi di donne ebree che soddisfacevano i bisogni sessuali dei soldati nazisti nei campi di concentramento. Da allora, è stato proposto il termine “trame Ridgeline”. Per una discussione più completa, consiglio questo eccellente articolo.


Una guida step-by-step per creare il joyplot usando Tableau

Ovviamente, creare un joyplot “classico” utilizzando Tableau non è affatto un problema. Questo diventa più complicato quando si vuole deviare il joyplot per rappresentare i picchi di densità all’interno di un’area geografica.
Questa è la sfida di questo tutorial, che permetterà di usare i joyplot per creare una mappa come quella qui sotto.

Nei paragrafi seguenti ci sono tutte le spiegazioni necessarie per riprodurre, passo dopo passo, lo stesso tipo di visualizzazione di quella mostrata sopra.
Per comprendere il principio è necessario tenere presente che dietro questo tipo di visualizzazione c’è una “griglia”, di cui alcuni punti sono associati ad un valore ed altri no.

Verrà visualizzato un “picco” solo per i quadrati a cui è associato un valore (le maglie colorate in arancione nel diagramma a lato).

Detto questo, è ora di mettersi al lavoro.


Step 1: elaborazione di latitudine e longitudine

La prima cosa da fare è arrotondare le coordinate geografiche (latitudine, longitudine) dei punti per inserirli nella griglia. Ciò richiede una riflessione preventiva sul “passo” da adottare. Un passo troppo sottile potrebbe “incuneare” il tavolo. Un passo troppo ampio non darà un risultato visivamente efficace.
Per la mia visualizzazione della popolazione obesa per contea in America, inizialmente avevo optato per un passo di 0,01. Stavo seguendo il consiglio di Alexander Varlamov. Un passo così leggero funziona per piccole aree geografiche (della scala di una città, per esempio) ma non per un paese grande come gli Stati Uniti. Quindi, sono tornato indietro su un passo di 0.1.

Dopo aver effettuato un join interno sui centroidi di ogni contea, non resta che applicare un arrotondamento per eccesso. Le variabili calcolate risultanti sono chiamate LatRound e LongRound.

LatRound = ROUND([Latitude],1)

LongRound = ROUND([Longitude],1)

Step 2: la creazione di una griglia di coordinate

Il secondo passaggio consiste nel “densificare” i dati in Tableau creando una griglia. Le coordinate delle celle della griglia verranno utilizzate per associare i valori dell’obesità per contea.
Per creare questa griglia, create una tabella in Excel, che includerà i valori delle longitudini nelle righe e delle latitudini nelle colonne. Un piccolo pivot dopo e otterrete una tabella come questa. Non dimenticate di controllare quali sono i valori minimo e massimo di latitudine e longitudine di cui avete bisogno


Poi fate un join giusto su questa tabella di Excel. Il join a destra permette di mantenere vuote le mesh a cui non è associato alcun valore.
I valori di latitudine e longitudine della griglia sono rispettivamente denominati “griglia latitudine” e “griglia longitudine”.

Step 3: eliminazione dei punti vuoti al di fuori dell’area geografica

Nella fase successiva elimineremo i punti che si trovano al di fuori dell’area geografica che desideriamo coprire. Ciò è particolarmente importante se si desidera ricostruire i confini di un paese ad esempio.

Iniziamo visualizzando a quali celle della griglia non sono associati valori. La seguente variabile calcolata lo rende molto semplice.

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

Usando questa variabile calcolata come guida per il colore, otteniamo questo. I confini degli Stati Uniti stanno lentamente iniziando a prendere forma, ma serve ancora un po’ di lavoro.

Ora elimineremo tutti i punti che sono al di fuori dei limiti geografici degli Stati Uniti. Le espressioni LOD ci consentono di farlo rapidamente. Creiamo la variabile calcolata “NullDotFilter” come segue:

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

Una volta applicata la variabile “NullDotFilter” come filtro, si ottiene (in alto) una visualizzazione che inizia ad assomigliare agli Stati Uniti.
Si può vedere in basso che la mappa è composta da linee orizzontali disegnate a 0,1 gradi di latitudine l’una dall’altra. Poiché ci sono ancora delle griglie vuote all’interno del territorio (puntini blu nella parte superiore del grafico), questi punti devono essere posizionati sulla linea di latitudine corretta. Ho quindi creato una variabile calcolata “zero dati”:

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

Passiamo ora alla parte più divertente, la programmazione dei “picchi” del Joyplot.

Step 4: Altezza dei picchi

La variabile calcolata “Y” viene creata in modo che l’altezza del “picco” sia funzione del valore assegnato ad ogni punto della griglia. Nel mio caso, l’esercizio si è rivelato più complicato del previsto perché i valori che ho elaborato (percentuale di persone obese per contea) erano relativamente vicini tra loro.

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

Per aumentare artificialmente le differenze tra i picchi, ho introdotto un fattore di valore 4. Di seguito si può vedere la differenza tra un fattore di 1 e un fattore di 4.

Non dimenticate di mettere in dettaglio la variabile “griglia latitudine” (come valore discreto).

Anche così, le differenze non erano molto visibili. Questo mi ha portato ad applicare i colori sotto forma di quartili.

Step 5: colori secondo il quartile

Per rendere più visibili le differenze ed eliminare le mesh mesh inutili, ho optato per una colorazione in quartile. Il 1° quartile corrisponderà a 0 e potrà essere assegnato al colore di sfondo della dashboard. Ho già spiegato più volte la tecnica e la sua origine (si veda in particolare il mio tutorial sulla mappa esametrica isometrica).

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

La variabile “rank color by quartile”, quindi, ci permette di colorare i nostri picchi per renderli più visibili.


Alcune considerazioni aggiuntive sul Joyplot

Il joyplot non è senza dubbio la visualizzazione più semplice da creare utilizzando Tableau. È anche lontano dall’essere adatto per applicazioni orientate al business. Tuttavia, come ha sottolineato Alexander Varlamov, il suo uso per scopi giornalistici è l’ideale. Il joyplot, infatti, è visivamente accattivante, di facile comprensione, e quindi si presta a informare il grande pubblico.
Per motivi di efficienza, però, consiglio di verificare prima di iniziare che i dati che si vogliono visualizzare assumano valori molto diversi tra loro. I joyplot più accattivanti si ottengono quando c’è una grande dispersione di dati. Col senno di poi, penso anche che applicare il joyplot a vasti territori possa dare risultati inferiori. La rappresentazione degli sfratti nella regione di San Francisco (vedere qui) mi sembra trarre un notevole beneficio dall’utilizzo del joyplot.



Posted in Data e IT.

Pubblica la tua opinione

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *