LLM e Grafici: Sanno Disegnare i Dati? E Capirli? La Mia Indagine
Ragazzi, parliamoci chiaro: i Large Language Models (LLM) come GPT-4, Gemini e Claude sono sulla bocca di tutti. Sembrano capaci di fare magie con le parole, ma mi sono chiesto: come se la cavano con qualcosa di più… visivo? Nello specifico, con la visualizzazione dei dati? Sapete, quei grafici che ci aiutano a capire numeri complessi a colpo d’occhio. Sono strumenti potentissimi, ma crearli a volte richiede competenze tecniche non da poco, tra librerie Python come Matplotlib o script come Vega-Lite.
Ecco, la domanda che mi frullava in testa era: possiamo chiedere a un LLM di creare un grafico per noi, magari con un semplice comando in linguaggio naturale? E, andando oltre, questi modelli sono in grado di *capire* un grafico che gli mostriamo, rispondendo a domande specifiche sui dati rappresentati?
Per rispondere a queste domande, mi sono rimboccato le maniche e ho messo alla prova alcuni dei più noti LLM su due fronti principali: la generazione di codice per creare visualizzazioni e la comprensione di visualizzazioni esistenti. L’obiettivo? Capire se questi cervelloni artificiali sono pronti per diventare i nostri assistenti personali nell’analisi dei dati.
LLM come “Artisti” dei Dati: Generare Visualizzazioni
La prima parte della mia indagine si è concentrata sulla capacità degli LLM di scrivere codice per creare grafici. Ho preso in esame modelli come GPT-4o di OpenAI, Gemini 1.5 Pro di Google e Claude 3 Opus di Anthropic (oltre al buon vecchio GPT-3.5 come termine di paragone).
La metodologia è stata abbastanza diretta:
- Ho selezionato una vasta gamma di tipi di grafici comuni: dai classici a barre e a torta, fino a quelli più complessi come i grafici a violino, le mappe corografiche o i grafici a radar. Ben 24 tipi diversi!
- Ho chiesto agli LLM di generare sia codice Python (usando principalmente la libreria Matplotlib, che è quella che scelgono di default) sia script Vega-Lite.
- Ho usato dei dataset appositamente preparati o scelti per adattarsi ai vari tipi di grafico.
- Ho formulato prompt semplici e chiari, tipo: “Puoi scrivere uno script Python che generi un grafico a bolle usando le colonne X, Y e Z dal file dati.csv?”.
- Ho eseguito il codice generato e valutato il risultato: il grafico era corretto? Rispecchiava la richiesta?
I risultati? Beh, un quadro con luci e ombre.
La buona notizia è che per i grafici più semplici (barre, torte, linee base), la maggior parte degli LLM se l’è cavata egregiamente, generando codice Python funzionante e corretto. GPT-4o si è dimostrato il più affidabile, riuscendo a generare correttamente circa il 95% dei grafici richiesti in Python con configurazione standard. Anche GPT-3.5, Gemini e Claude hanno mostrato buone capacità, attestandosi intorno al 79-80%.
I problemi sono sorti con visualizzazioni più complesse o meno comuni. Ad esempio, generare un grafico a violino o un bullet chart ha messo in difficoltà alcuni modelli. In alcuni casi, hanno prodotto un tipo di grafico completamente diverso da quello richiesto (Gemini ha scambiato un range plot per un violin plot, GPT-3.5 ha confuso un bullet chart con un pyramid chart).

Ho anche provato a chiedere modifiche specifiche all’aspetto dei grafici (cambiare colori, spessori delle linee, aggiungere etichette, usare forme diverse per i punti in un grafico a dispersione). Anche qui, GPT-4o si è distinto per flessibilità, riuscendo a soddisfare oltre il 92% delle richieste di personalizzazione in Python. Gli altri modelli hanno seguito a ruota, ma con qualche inciampo in più. Ad esempio, chiedendo barre più strette, Gemini ha compresso l’intero grafico invece di ridurre solo la larghezza delle barre!
La vera nota dolente è arrivata con Vega-Lite. Qui le performance sono crollate drasticamente per tutti. GPT-4o è sceso al 70% di successo, mentre Gemini è risultato quasi inutilizzabile, generando correttamente solo il 24% degli script richiesti. Chiaramente, la generazione di script Vega-Lite è ancora un terreno ostico per questi modelli.
Ma Capiscono Davvero Quello Che Vedono? L’Analisi della Comprensione
Ok, generare codice è una cosa. Ma se mostro un grafico a un LLM, è in grado di interpretarlo? Per scoprirlo, ho usato il dataset FigureQA, che contiene grafici comuni (barre verticali/orizzontali, linee continue/discontinue, torte) accompagnati da domande binarie (sì/no) sui dati rappresentati (es. “Il valore della barra rossa è maggiore di quella blu?”).
Ho testato GPT-4o, Gemini 1.5 Pro e Claude 3 Opus su un campione di 100 immagini e oltre 1300 domande da FigureQA. I risultati iniziali hanno visto ancora una volta GPT-4o in testa, seguito da vicino da Gemini, con Claude un po’ più indietro.
Tuttavia, le domande binarie hanno un limite: un modello può ottenere il 50% di risposte corrette semplicemente tirando a indovinare. Non misura la vera comprensione. Così, ho fatto un passo in più: ho selezionato 20 grafici per tipo (barre, linee, torte) e ho creato una serie di domande aperte e più specifiche, del tipo:
- “Quante barre ci sono e di che colore sono?”
- “Quale colore ha il valore massimo/minimo?”
- “Le linee X e Y si intersecano?”
- “Qual è l’area della fetta di torta di colore Z?”
- “Ci sono linee tratteggiate?”
Ho anche testato se un semplice “system prompt” iniziale (“Analizza attentamente il grafico e rispondi correttamente”) potesse migliorare le performance.
Qui sono emerse le vere sfide:
- Valori Vicini: Tutti i modelli hanno mostrato difficoltà nel distinguere barre o fette di torta con valori molto simili. Stabilire quale fosse leggermente più grande o più piccolo è stato spesso un problema.
- Dettagli Specifici: Interpretare elementi come le linee tratteggiate nei grafici a linee si è rivelato complicato, specialmente per Gemini. A volte venivano ignorate o contate in modo errato.
- Accuratezza dei Valori: Chiedere il valore esatto di una barra o la lunghezza di un segmento è stato un altro punto debole, con Claude particolarmente impreciso.
- Nomi dei Colori: Claude, in particolare, tendeva a usare nomi di colori generici (“rosso”, “blu”) invece di quelli specifici indicati nella legenda del grafico, o addirittura inventava dettagli non presenti (in un caso ha risposto “Sud Africa” alla domanda su quale colore avesse il valore minimo!).
- Performance Variabile: L’accuratezza variava molto a seconda del tipo di grafico. Tutti hanno faticato parecchio con i grafici a linee (forse proprio per le linee tratteggiate e le intersezioni), mentre se la sono cavata decisamente meglio con i grafici a torta.
- Impatto del System Prompt: Fornire un’istruzione iniziale chiara ha generalmente migliorato i risultati, soprattutto per Gemini e GPT-4o, suggerendo che guidare l’attenzione del modello è utile.
![]()
Tiriamo le Somme: Promesse e Limiti
Alla fine di questa esplorazione, cosa ho imparato? Che gli LLM sono strumenti promettenti anche nel campo della visualizzazione dati, ma non sono ancora la bacchetta magica.
Punti di forza:
- Sono bravi a generare codice Python per grafici standard e comuni.
- Possono gestire richieste di personalizzazione di base.
- Mostrano una capacità basilare di interpretare grafici semplici e rispondere a domande dirette.
- GPT-4o sembra essere attualmente il modello più versatile e performante su entrambi i fronti.
Punti deboli:
- Faticano con grafici complessi o meno comuni.
- La generazione di script Vega-Lite è ancora molto indietro.
- La comprensione profonda dei grafici è limitata: hanno problemi con valori vicini, dettagli specifici (linee tratteggiate), misurazioni precise e, a volte, coerenza.
- La loro accuratezza varia significativamente in base al tipo di grafico.
Cosa Ci Riserva il Futuro?
Questa analisi, seppur basata su un set specifico di test, ci dà indicazioni preziose. Sappiamo dove gli LLM brillano e dove ancora inciampano. Queste informazioni sono fondamentali per chi sviluppa questi modelli, perché evidenziano le aree che necessitano di miglioramento.
Il futuro? Probabilmente vedremo LLM sempre più capaci, magari grazie a tecniche di prompting più avanzate (come il Chain-of-Thought) o addestramenti specifici. Si potrebbe estendere l’analisi ad altri tipi di visualizzazioni (grafi, alberi) e sviluppare metriche di valutazione più robuste. Immaginate un futuro in cui potremo dialogare con un assistente AI per creare visualizzazioni interattive complesse semplicemente descrivendole a parole… Non siamo ancora lì, ma la strada è tracciata e, devo dire, il viaggio si preannuncia affascinante!
Fonte: Springer
