VIOLIN PLOT: COS’È E COME COSTRUIRLO IN TABLEAU

Cos’è un Violin Plot?

Il Violin Plot (o grafico a violino) è un grafico che, come il boxplot, rende possibile visualizzare la distribuzione di dati numerici, ma a differenza del boxplot è anche capace di rendere visibile la densità di probabilità di ogni variabile. Il profilo della densità viene rappresentato attraverso la stima Kernel di densità, un metodo statistico non parametrico, per calcolare l’appartenenza dei dati a una classe definita in un intorno di un punto nel grafico. 

Stima Kernel di densità vs. Distribuzione normale

Normalmente la distribuzione di una misura visualizzata tramite un grafico a istogrammi comporta un raggruppamento dei valori della misura in bin

In questo modo la stessa distribuzione all’interno di un’area chart renderebbe la distribuzione di densità dei dati segmentata. Per questo motivo è necessario applicare la stima Kernel di densità, che permetterà di smussare gli angoli della curva di distribuzione. 

La distribuzione di Kernel è una stima, in quanto tratta la distribuzione dei dati come una frequenza. La probabilità di densità verrà visualizzata come un’unica curva risultato della somma di tutte le frequenze delle singole variabili prese in considerazione. 

Come costruire un Violin Plot in Tableau

Preparazione dei dati

Il primo step da effettuare sarà creare un file Excel di supporto che renderà possibile la distribuzione dei dati lungo un asse del grafico.  È sufficiente creare una singola colonna con valori che vanno da 1 a 99.   

Conclusa la fase di preparazione dei dati su Tableau è necessario aprire il file che contiene la nostra misura di interesse, portando a livello logico la tabella che la contiene e successivamente caricare il file di supporto appena creato. Per la costruzione del Violin Plot è fondamentale unire i due file, quindi una volta aperto il livello fisico della tabella (con un doppio click sulla rappresentazione logica della tabella) è possibile trascinare la tabella di supporto nel livello fisico per costruire una join tra i due dataset. 

Non abbiamo delle colonne chiave per poter effettuare la classica join. Per questo motivo la join sarà instaurata attraverso la creazione di 2 campi calcolati uguali per entrambe le tabelle che garantiscono la connessione dei due file. 

‘join’
Parametri e Campi Calcolati

A questo punto possiamo spostarci all’interno del primo worksheet per iniziare a porre le basi per la costruzione di un Violin Plot. 

In primo luogo sarà necessario aggiungere 2 Parametri che ci permetteranno di fittare al meglio i valori della nostra misura all’interno della stima Kernel di densità.

Il parametro ‘Scaffold scaling factor’ sarà strettamente connesso a quei valori creati nel file di supporto, si tratta di valori di base su cui verranno distribuiti i valori della nostra misura. La modifica del valore numerico all’interno di questo parametro permetterà di accogliere all’interno dell’asse i valori della misura di interesse. 

Mentre, il parametro ‘Bandwidth’ è strettamente legato alla stima Kernel di densità. La variazione del valore numerico determina l’approssimazione della stima Kernel quindi quanto il nostro grafico sarà accurato, a discapito della sinuosità della curva che rappresenterà la probabilità della distribuzione dei dati di interesse. 

Una delle difficoltà principali, sarà proprio quella di rendere la visualizzazione della distribuzione della densità dei dati tondeggiante. Per questo, sarà necessario costruire un campo calcolato che ci permetta di smussare gli angoli della distribuzione. Questo campo calcolato ‘Kernel’ non sarà altro che la formula della stima Kernel di densità.

(1/({COUNTD([Storm speed (mph)])}*[Bandwidth])
*
(1/(SQRT(2*PI()))) 

EXP(-0.5  * (([Evenly distributed scaffold values] – [Storm speed (mph)])^2)/[Bandwidth]))

La join costruita in precedenza non è sufficiente per legare i valori di supporto creati in precedenza con la misura di interesse. È necessario aggiungere un campo calcolatoEvenly distributed scaffold values’ che permetta di distribuire i valori della misura sui valori che fungeranno da scheletro centrale per il violin plot.

IF [Scaffold Values] = 0 THEN {MIN([Storm speed (mph)])} – [Scaffold scaling factor]
ELSEIF [Scaffold Values] = 99 THEN {MAX([Storm speed (mph)])} + [Scaffold scaling factor]
ELSE
    ({MIN([Storm speed (mph)])} – [Scaffold scaling factor]) 

    (
        ABS(
            ({MAX([Storm speed (mph)])}+[Scaffold scaling factor]) – ({MIN([Storm speed (mph)])}-[Scaffold scaling factor]) 
           )
        * ([Scaffold Values]/99)
    )
END

Questo campo calcolato è connesso al parametro ‘Scaffold scaling factor’. Se il valore del parametro è impostato su 0, tutte le misure di interesse verranno distribuite in modo uniforme all’interno del range 0-90 come di seguito.

Mentre, se il valore del parametro è impostato su 4, tutte le misure di interesse verranno distribuite in modo uniforme all’interno di un range diverso, quello tra -4 e 94.

Costruzione del Violin Plot

A questo punto tutte le unità strutturali del grafico sono pronte per essere assemblate. 

Quindi su un worksheet nuovo è possibile iniziare la costruzione di un Violin Plot. 

Il primo step sarà quello di trasformare il campo calcolato  ‘Evenly distributed scaffold values’ in dimension per poi renderlo continuo.  

Quindi è possibile trascinare il campo calcolato ‘Evenly distributed scaffold values’ nelle colonne.

Lo step successivo sarà quello di trascinare il campo calcolatoKernel’ nelle righe. Impostando i parametri per far fittare al meglio la distribuzione dei valori della misura di interesse. 

Con un po’ di immaginazione è possibile riconoscere già la metà di quello che sarà il Violin Plot finale. 

Quindi ora basterà duplicare e invertire questa visualizzazione per ottenere il grafico desiderato. Questi ultimi step consistono nel duplicare o aggiungere nuovamente il campo calcolato ‘Kernel’ nelle righe.

Dopodiché basterà invertire il segno di uno dei due campi calcolatiKernel’ che presenti sullo scaffale delle righe. Per questo è sufficiente fare doppio click su uno degli ovali verdi e inserire un ‘’ davanti al campo. 

Il grafico inizia a prendere forma quindi non ci resta che fare dei piccoli aggiustamenti come applicare la funzione di ‘Dual axis’ sul nuovo asse del campo calcolatoKernel’ che abbiamo invertito e sincronizzare gli assi

Il Violin plot è quasi ultimato, basterà cambiare il tipo di visualizzazione nella sezione dei ‘Marks’ per convertire il grafico in un ‘Area chart’.

Infine il Violin Plot è ultimato!

Il dataset utilizzato per questo articolo racchiude le informazioni di alcuni uragani. In particolare, la misura di interesse scelta è la velocità che ogni uragano registrato possedeva. Aggiungendo questa measure all’interno del Violin Plot si ottiene la distribuzione di densità di queste velocità, quindi più uragani hanno avuto una velocità simile più sarà alto il punto nel grafico. Le potenzialità del Violin Plot non sono ancora finite, in particolare è possibile rappresentare la probabilità di distribuzione di densità della velocità degli uragani per le diverse categorie in cui vengono classificati gli uragani (scala Fujita – da F0 a F5). Per visualizzare la distribuzione per categoria, basterà invertire gli assi per avere più spazio orizzontale a disposizione e trascinare la dimensione delle categorie nelle colonne. 

articoli correlati

Come costruire una Waffle Chart in Tableau

La waffle chart è un’ottima soluzione per rappresentare percentuali di un totale.  In questo articolo vengono presentati gli step per creare una “Waffle Chart” partendo

Lollipop Chart e varianti in Tableau

Una delle sfide principali da affrontare quando ci si approccia al mondo dell’analisi dati è la necessità di veicolare in maniera rapida ed efficace le

Tableau integrato da Mapbox

Tableau integrato da Mapbox La mappa è una delle visualizzazioni più utilizzate in Tableau per dare un contesto significativo ai dati. Questo ha lo  scopo