Perché la visualizzazione conta
La data visualization è dare una forma ai numeri perché si capiscano guardandoli. Serve a chi lavora con l'AI, a chi fa marketing e a chiunque debba far prendere una decisione a qualcuno leggendo dei dati: la tabella la guardano in tre, il grafico lo guardano tutti.
Punti chiave
- Un grafico ben progettato comunica pattern, trend e anomalie molto più rapidamente di una tabella di numeri.
- I principi di Tufte (data-ink ratio, eliminazione del chartjunk, lie factor) sono la base di ogni visualizzazione efficace.
- Ogni tipo di grafico risponde a una domanda diversa: si sceglie partendo dalla domanda, e l'estetica viene dopo.
- Matplotlib e Seaborn per l'analisi, Plotly e Tableau per dashboard e report interattivi.
- Il data storytelling trasforma i dati in decisioni: senza azione, anche il grafico migliore è inutile.
Un grafico fatto bene fa vedere in due secondi quello che in una tabella resta nascosto: la stagionalità, il picco anomalo, il dato che non torna. Ai corsi lo provo sempre così: prima la tabella con trentasei righe, e nessuno nota niente; poi lo stesso dato in una linea, e la domanda giusta la fanno loro. Nel lavoro con l'AI serve per:
- Analisi esplorativa: comprendere la distribuzione dei dati, identificare outlier e correlazioni prima di addestrare un modello.
- Monitoraggio modelli: visualizzare loss curve, matrici di confusione, ROC curve.
- Comunicazione risultati: presentare insight a stakeholder non tecnici.
Principi di Tufte
Edward Tufte, in «The Visual Display of Quantitative Information» del 1983, ha messo per iscritto le regole che ancora oggi separano un grafico onesto da un grafico decorato:
I principi chiave
Data-ink ratio: massimizzare la quantità di "inchiostro" dedicata ai dati rispetto agli elementi decorativi. Ogni pixel deve servire a comunicare informazione.
Chartjunk: eliminare decorazioni inutili, gradienti, effetti 3D, sfondi, griglie eccessive.
Lie factor: la rappresentazione visiva deve essere proporzionale ai dati. Un valore doppio deve apparire visivamente doppio.
Come si traducono nella pratica:
- Inizia gli assi da zero (per i grafici a barre) per evitare distorsioni percettive.
- Usa i colori con intenzione: evidenzia l'insight principale, usa toni neutri per il contesto.
- Etichetta direttamente le serie dati invece di usare legende separate, riducendo lo sforzo cognitivo.
- Un grafico, un messaggio: ogni visualizzazione deve rispondere a una domanda specifica.
"Above all else, show the data." (Edward Tufte). La forma deve essere al servizio del contenuto, mai il contrario.
Tipi di grafico e quando usarli
| Tipo | Domanda a cui risponde | Quando usarlo |
|---|---|---|
| Bar chart | Come si confrontano le categorie? | Confronto tra valori discreti |
| Line chart | Come cambia il valore nel tempo? | Trend temporali, serie storiche |
| Scatter plot | Esiste una relazione tra due variabili? | Correlazioni, cluster, outlier |
| Histogram | Come sono distribuiti i valori? | Distribuzioni di frequenza |
| Heatmap | Quali combinazioni hanno valori alti/bassi? | Correlazioni, matrici di confusione |
| Box plot | Come varia la distribuzione tra gruppi? | Confronto distribuzioni, outlier |
| Pie chart | Qual è la composizione del totale? | Raramente (bar chart quasi sempre migliore) |
Regola pratica: il pie chart è da evitare nella maggior parte dei casi, il cervello umano è scarso nel comparare angoli. Un bar chart orizzontale comunica le stesse informazioni in modo più preciso e leggibile. Riservalo solo a composizioni con due o tre categorie molto diverse tra loro, dove la lettura della proporzione resta immediata.
Matplotlib e Seaborn
Matplotlib è la libreria di base per la visualizzazione in Python. Offre controllo completo su ogni elemento del grafico ma richiede più codice per risultati esteticamente piacevoli.
Seaborn sta sopra Matplotlib e ti fa arrivare al grafico statistico con molte meno righe, con un aspetto già presentabile. Dove rende meglio:
- Grafici di distribuzione:
sns.histplot(),sns.kdeplot(),sns.boxplot() - Grafici di relazione:
sns.scatterplot(),sns.pairplot()(scatterplot matrix) - Heatmap:
sns.heatmap(correlation_matrix, annot=True) - Categorici:
sns.barplot(),sns.countplot(),sns.violinplot()
La combinazione Matplotlib + Seaborn è lo standard per analisi esplorativa e paper accademici. Per report interattivi e dashboard, si preferisce Plotly.
Plotly e grafici interattivi
Plotly fa grafici interattivi (zoom, hover, trascinamento) già pronti per il web. Con plotly.express un grafico complesso sta in una riga, funziona dentro Jupyter e si esporta in un HTML che puoi mandare via mail a chi non ha Python.
Dash, sempre di Plotly, ti fa costruire una dashboard web in Python puro, senza toccare HTML o JavaScript. È quello che uso per le dashboard di lavoro interne: monitorare metriche, guardare i risultati di un modello, dare uno strumento a chi non programma.
Alternative notevoli: Bokeh (grafici interattivi con maggiore controllo), Altair (API dichiarativa ispirata a Vega-Lite, eccellente per analisi esplorativa rapida).
Tableau e strumenti no-code
Tableau è lo strumento di data visualization più usato in ambito enterprise. La sua forza è l'approccio drag-and-drop che rende la creazione di dashboard accessibile a utenti non tecnici, mantenendo grande flessibilità.
Le alternative che vale la pena conoscere:
- Power BI (Microsoft): integrazione nativa con l'ecosistema Microsoft, ideale per aziende che usano Excel/Azure.
- Looker Studio (Google, gratuito): la strada più corta se i dati stanno in Analytics, Ads o Search Console
- Metabase (open source): self-hosted, ottimo per team tecnici che vogliono dare accesso ai dati senza Tableau.
- Streamlit (Python): crea app web interattive per ML con pochissimo codice, ideale per prototipi rapidi.
Dashboard e data storytelling
La data visualization raggiunge il suo pieno potenziale quando si trasforma in data storytelling: non basta mostrare i dati, bisogna raccontare una storia che porti a decisioni.
Una dashboard che viene usata davvero rispetta poche regole:
- Gerarchia visiva: le informazioni più importanti in alto a sinistra, dettagli in basso o in pagine secondarie.
- KPI in evidenza: numeri chiave con indicatori di variazione (frecce, colori) immediatamente visibili.
- Filtri interattivi: permettere all'utente di esplorare diverse dimensioni (periodo, segmento, canale).
- Contesto: ogni numero ha bisogno di un riferimento (target, periodo precedente, benchmark).
- Actionability: ogni visualizzazione deve suggerire un'azione concreta.
Il miglior grafico al mondo è inutile se non porta a una decisione. La data visualization è il ponte tra l'analisi AI e l'azione business. Per i dati da visualizzare, servono competenze di analisi con Python; per evitare di raccontare storie false con i dati, attenzione agli errori comuni come il cherry-picking e il bias di conferma.
Vuoi imparare ad applicarlo davvero?
Scopri i corsi e la formazione di Federico Boggia su AI, dati e digitale.