Torna al catalogo
Season 36 5 Episodi 18 min 2026

Matplotlib

v3.10 — Edizione 2026. Un corso audio completo su Matplotlib, la libreria di visualizzazione più popolare di Python. Scopri l'identità principale, il ciclo di vita di un plot, i layout avanzati, i tipi di plot e i flussi di lavoro per power-user per la versione 3.10.

Visualizzazione dei Dati Scienza dei Dati
Matplotlib
In Riproduzione
Click play to start
0:00
0:00
1
L'Identità Principale: Figure, Axes e Interfacce
Benvenuti in Matplotlib. In questo episodio, definiamo il modello mentale al centro della libreria di visualizzazione più popolare di Python. Scopri la differenza tra una Figure e un Axes, e perché l'interfaccia esplicita Object-Oriented è il tuo strumento migliore.
3m 18s
2
Il Ciclo di Vita di un Plot
Scopri come portare un plot dai dati grezzi a una visualizzazione etichettata e formattata. Esaminiamo il ciclo di vita di un semplice grafico, mostrandoti esattamente come aggiungere etichette, titoli e tick formatters personalizzati utilizzando l'interfaccia esplicita.
3m 37s
3
Padroneggiare i Layout: Subplots e Mosaics
Impara a gestire più plot su un singolo canvas senza che si sovrappongano. Questo episodio copre plt.subplots, la potenza di subplot_mosaic per i layout semantici e l'uso del constrained layout per mantenere tutto in ordine.
3m 58s
4
Oltre la Linea: Esplorare i Tipi di Plot Fondamentali
Spingiti oltre le semplici linee e gli scatter plot. Mappiamo le categorie di plot di Matplotlib, confrontando i plot di distribuzione statistica con le funzioni per dati a griglia come imshow e pcolormesh.
3m 38s
5
Flussi di Lavoro per Power-User: Stili e rcParams
Trasforma istantaneamente l'aspetto dei tuoi plot. Nel nostro episodio finale, esploriamo come utilizzare gli style sheets predefiniti e personalizzare dinamicamente le impostazioni globali usando rcParams.
4m 13s

Episodi

1

L'Identità Principale: Figure, Axes e Interfacce

3m 18s

Benvenuti in Matplotlib. In questo episodio, definiamo il modello mentale al centro della libreria di visualizzazione più popolare di Python. Scopri la differenza tra una Figure e un Axes, e perché l'interfaccia esplicita Object-Oriented è il tuo strumento migliore.

Download
Ciao, sono Alex di DEV STORIES DOT EU. Matplotlib, episodio 1 di 5. Copi una soluzione di plotting da Stack Overflow, la incolli nel tuo codice, e all'improvviso il tuo nuovo grafico sovrascrive quello vecchio. Il codice sembra corretto, ma si comporta come un mostro di Frankenstein. Questo succede perché la maggior parte degli esempi online mescola due modi completamente diversi di usare la libreria senza spiegarne il motivo. Per risolvere il problema, devi capire l'identità fondamentale: Figure, Axes e interfacce. Matplotlib è la base della visualizzazione in Python. Pandas, Seaborn e molte altre librerie ci girano sopra. Ma gli sviluppatori spesso inciampano sulla sua architettura. Per scrivere codice di visualizzazione pulito, devi separare il contenitore dal contenuto. In Matplotlib, questo significa capire la differenza tra una Figure e un Axes. La Figure è la tua tela. È il contenitore top-level che racchiude l'intera finestra, il background e tutti gli elementi al suo interno. Ma una Figure non disegna i dati. Per farlo, ti serve un Axes. L'Axes è il plot vero e proprio. È l'area in cui vivono le tue linee, le barre e gli scatter point. Una Figure può contenere più Axes, come una griglia di quattro subplot. Tieni a mente che Axes non è il plurale della parola axis. Un oggetto Axes contiene due o tre oggetti Axis singoli, che gestiscono le specifiche linee numeriche e i tick. Colleghi i dati all'Axes, e l'Axes è collegato alla Figure. Una volta capito cosa sono questi oggetti, devi decidere come interagirci. È qui che inizia la confusione. Matplotlib ti offre due modi distinti per costruire un grafico: l'interfaccia implicita e l'interfaccia esplicita. L'interfaccia implicita si basa su un modulo chiamato pyplot. Tiene traccia dello stato del tuo programma dietro le quinte. Quando chiami direttamente una funzione di plotting, Matplotlib dà per scontato che tu voglia disegnare sulla Figure e sull'Axes attualmente attivi. Se non esistono, li crea per te. Questo è comodissimo per uno script rapido e usa e getta, dove devi solo ispezionare dei dati velocemente. Ma dato che si basa su uno stato globale nascosto, diventa imprevedibile nelle applicazioni più grandi. L'interfaccia esplicita, spesso chiamata interfaccia object-oriented, elimina ogni incertezza. Istanzi i tuoi oggetti in anticipo. Prima crei insieme la Figure e l'Axes, poi chiami i metodi direttamente su quegli oggetti specifici. Non ti affidi mai alla libreria per indovinare a quale plot stai puntando. Se stai costruendo una dashboard riutilizzabile, usa sempre l'interfaccia esplicita. Puoi scrivere delle helper function che prendono un oggetto Axes come argomento, ci plottano i dati e lo restituiscono. Alla funzione non importa dello stato globale dell'applicazione. Si limita a modificare l'oggetto che le è stato passato. Questo rende il tuo codice modulare e testabile. Ecco il punto chiave. Puoi usare entrambi i metodi, ma non dovresti mai mescolarli. Usa l'interfaccia implicita di pyplot per un'esplorazione rapida in un notebook, e usa l'interfaccia esplicita object-oriented per il codice in produzione. Se ti piace lo show e vuoi supportarci, puoi trovarci cercando DevStoriesEU su Patreon. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a sviluppare!
2

Il Ciclo di Vita di un Plot

3m 37s

Scopri come portare un plot dai dati grezzi a una visualizzazione etichettata e formattata. Esaminiamo il ciclo di vita di un semplice grafico, mostrandoti esattamente come aggiungere etichette, titoli e tick formatters personalizzati utilizzando l'interfaccia esplicita.

Download
Ciao, sono Alex di DEV STORIES DOT EU. Matplotlib, episodio 2 di 5. Formattare i numeri su un asse può sembrare una vera impresa. Vuoi un cento K pulito con il simbolo del dollaro, ma ti ritrovi con la notazione scientifica o con degli integer grezzi che affollano lo schermo. La soluzione è incredibilmente semplice una volta che impari ad affidare il controllo del tuo asse direttamente a una funzione Python standard. Oggi guardiamo il ciclo di vita di un plot usando l'interfaccia esplicita degli axes. L'interfaccia esplicita tratta la creazione di chart come un processo prevedibile e graduale. Chiami sempre dei metodi su un oggetto specifico. Il ciclo di vita inizia creando una figure e un oggetto axes. La figure è la tela bianca. L'oggetto axes rappresenta l'area effettiva in cui vivranno i tuoi dati. Una volta che hai quell'oggetto axes, ogni personalizzazione è solo un'altra method call applicata ad esso. Considera uno scenario in cui hai una lista di nomi di aziende e una lista dei loro ricavi. Per portare questi dati sullo schermo, chiami un metodo di plotting sull'axes. Per un bar chart orizzontale, chiami bar h e passi i nomi e i ricavi. A questo punto, hai un plot funzionante, ma gli manca il contesto. La fase successiva del ciclo di vita è aggiungere questo contesto. Un approccio comune è quello di impostare il title, la x label e la y label singolarmente. Tuttavia, l'oggetto axes ha un metodo set unificato. Puoi chiamare set e passare dei keyword arguments per il title, la x label e la y label tutti in una volta. Questa singola riga di codice gestisce il testo strutturale del tuo chart. Se mai avessi bisogno di ispezionare cosa è attualmente applicato, puoi usare i corrispondenti metodi get, come get x tick labels, per recuperare lo stato corrente prima di modificarlo. Questo ci porta alla parte più critica del fine-tuning: la formattazione dei numeri sull'asse. Quando plotti i ricavi, i numeri grandi creano degli axes disordinati. Matplotlib potrebbe visualizzare centomila con tutti i suoi zeri. Tu vuoi che dica cento K con il simbolo del dollaro. Ecco l'intuizione chiave. Non devi scavare tra oscure impostazioni di Matplotlib per risolvere questo problema. Scrivi semplicemente una normale funzione Python. Definisci una funzione che prende due argomenti: il tick value e la sua posizione. All'interno di questa funzione, scrivi della logica Python standard. Controlli se il valore è nelle migliaia, lo dividi per mille e ritorni una string formattata con un simbolo del dollaro e una K maiuscola. Per applicare tutto questo, dici all'oggetto axes di usare la tua funzione per i suoi tick marks. Accedi alla property x-axis sul tuo oggetto axes, e poi chiami un metodo chiamato set major formatter. Passi la tua funzione custom direttamente in questo metodo. Matplotlib prende il controllo da lì. Mentre disegna il plot, passa ogni singolo tick value sull'asse x attraverso la tua funzione Python e mostra la string pulita che hai ritornato. L'interfaccia esplicita rimuove le incertezze dalla personalizzazione dei chart suddividendola in una sequenza affidabile: crei l'axes, mappi i dati raw, applichi le tue label tramite un singolo metodo set, e intercetti il tick formatting interamente con la tua logica. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a costruire!
3

Padroneggiare i Layout: Subplots e Mosaics

3m 58s

Impara a gestire più plot su un singolo canvas senza che si sovrappongano. Questo episodio copre plt.subplots, la potenza di subplot_mosaic per i layout semantici e l'uso del constrained layout per mantenere tutto in ordine.

Download
Ciao, sono Alex di DEV STORIES DOT EU. Matplotlib, episodio 3 di 5. Devi creare una dashboard con un grafico di header ampio e due grafici più piccoli sotto. In passato, questo significava calcolare le frazioni della griglia e posizionare manualmente gli axes. Ora, puoi creare esattamente quel layout digitando una string ASCII art. Questo è Mastering Layouts: Subplots e Mosaics. La maggior parte delle visualizzazioni di dati inizia con una griglia di base. Quando hai bisogno di un layout due per due, chiami la funzione standard subplots, specifichi il numero di righe e colonne, e Matplotlib ti restituisce un oggetto figure e un array multidimensionale che contiene i tuoi singoli axes. Usi l'indicizzazione standard degli array per selezionare un axis specifico e disegnare i tuoi dati. Questo funziona perfettamente finché non aggiungi del testo. Di default, Matplotlib posiziona gli axes in base a proporzioni fisse delle dimensioni della figure. Non tiene conto dello spazio fisico occupato dai tuoi titoli, dalle label degli axes o dai tick. Di conseguenza, le label dell'axis X della riga superiore spesso si sovrappongono ai titoli della riga inferiore. Invece di scrivere aggiustamenti di spaziatura custom, dovresti gestire questa cosa in fase di creazione della figure. Passa l'argomento layout impostato sulla parola constrained. Il constrained layout è un motore di ottimizzazione. Poco prima che la figure venga disegnata, misura le bounding box di tutti i tuoi elementi di testo e allontana gli axes quel tanto che basta per evitare collisioni. I subplots standard e i constrained layout coprono le griglie simmetriche. Ma le dashboard raramente sono simmetriche. Spesso hai bisogno di grafici che si estendono su più righe o colonne. Questo ci riporta al grafico di header ampio che occupa la riga superiore, con due grafici più piccoli affiancati sotto. Invece di gestire oggetti di specifica della griglia di basso livello, puoi usare un metodo semantico chiamato subplot mosaic. Chiami subplot mosaic direttamente sul tuo oggetto figure. Accetta una rappresentazione visiva del tuo layout, scritta interamente usando delle string. Ogni carattere univoco che digiti rappresenta un grafico distinto. Se un carattere è ripetuto su più righe o colonne, quel grafico si estende per riempire quegli spazi. Per creare il layout della nostra dashboard, puoi passare una singola string dove le righe sono separate da punti e virgola. Per la riga superiore, digiti la lettera maiuscola A due volte. Poi un punto e virgola. Per la riga inferiore, digiti la lettera maiuscola B, poi la lettera maiuscola C. L'intera string è semplicemente A A punto e virgola B C. Matplotlib fa il parsing di questa string e vede che A occupa due colonne nella prima riga, quindi crea un unico axis largo che si estende in alto. Vede che B e C occupano una colonna ciascuno nella seconda riga, quindi crea due axes più piccoli in basso. Ecco il punto chiave. Dato che gli array standard perdono di significato nei layout complessi, subplot mosaic non restituisce un array. Restituisce un dictionary Python standard. Le key di questo dictionary sono gli esatti caratteri della string che hai mappato nel tuo design. Se vuoi disegnare un line chart sul tuo header largo, accedi semplicemente al dictionary usando la key A. Se vuoi inserire uno scatter plot in basso a destra, accedi al dictionary usando la key C. Il tuo codice di plotting diventa completamente disaccoppiato dalle coordinate della griglia. Puoi anche usare questo sistema per creare del white space intenzionale. Se vuoi uno spazio vuoto nella tua griglia, metti un carattere punto nella tua layout string. Matplotlib legge il punto e lascia quella specifica cella della griglia completamente vuota. La matematica complessa per le griglie è roba del passato. Il layout design moderno consiste solo nel digitare la forma visiva che vuoi e lasciare che il dictionary mappi i tuoi dati nello spazio esatto sullo schermo. Questo è tutto per questa volta. Grazie per aver ascoltato, e continua a creare!
4

Oltre la Linea: Esplorare i Tipi di Plot Fondamentali

3m 38s

Spingiti oltre le semplici linee e gli scatter plot. Mappiamo le categorie di plot di Matplotlib, confrontando i plot di distribuzione statistica con le funzioni per dati a griglia come imshow e pcolormesh.

Download
Ciao, sono Alex di DEV STORIES DOT EU. Matplotlib, episodio 4 di 5. Hai diecimila data point, li butti su uno scatter plot e ti ritrovi con un'enorme macchia d'inchiostro illeggibile, dove i punti sovrapposti nascondono il pattern reale. Hai scelto un tool pairwise per un problema di densità. Per andare oltre il line chart di default devi sapere come abbinare la forma dei tuoi dati al tool visivo giusto, che è esattamente quello che trattiamo in Beyond the Line: Exploring Core Plot Types. Matplotlib organizza i suoi plot principali in ampie categorie in base alla struttura dei tuoi dati. Le tre categorie fondamentali sono i dati pairwise, le distribuzioni statistiche e i dati su griglia. La forma più semplice è quella pairwise. Hai un array di valori X e un array corrispondente di valori Y. Usi la funzione plot quando questi punti hanno una sequenza logica, come una time series, dove tracciare una linea continua tra di loro mostra un trend. Se i punti sono osservazioni indipendenti, usi la funzione scatter per posizionare i singoli marker. Ma gli scatter plot smettono di funzionare quando hai un'alta densità. Questo ci porta alla seconda categoria, che gestisce le distribuzioni statistiche. Ecco il punto chiave. Quando hai diecimila punti sovrapposti, non ti interessa davvero la coordinata esatta del punto numero quattromila. Ti interessa dove i punti formano dei cluster. È qui che entra in gioco una funzione come hexbin. Prende gli stessi array X e Y di uno scatter plot, ma raggruppa l'area geometrica in bin esagonali, colorandoli in base alla densità dei punti per rivelare il pattern nascosto. Ora considera un singolo array contenente le età grezze di tutti i tuoi clienti. Plottarle una per una come punti ti dà solo del rumore inutile. Invece, passi quella singola flat list alla funzione hist. Un istogramma raggruppa automaticamente le singole età in range e ti mostra il volume di clienti ventenni rispetto a quelli cinquantenni. Se devi confrontare queste distribuzioni di età tra cinque diversi punti vendita fianco a fianco, passi a un boxplot. Il boxplot riassume in modo pulito i range, le mediane e gli outlier. Se hai bisogno di più dettagli di quelli forniti da un boxplot, un violinplot disegna l'intera forma curva del profilo di densità per ogni punto vendita. La terza categoria principale è quella dei dati su griglia. Questa si applica quando i tuoi dati sono una matrice bidimensionale e devi visualizzare un valore continuo su un'area. Pensa a una mappa bidimensionale della temperatura su una griglia geografica. Ogni posizione ha una coordinata X, una coordinata Y e un valore di temperatura. Non vuoi linee o punti sparsi per rappresentare tutto questo. Vuoi una superficie solida e colorata. Matplotlib fornisce imshow e pcolormesh per questo scopo. Usi imshow quando i tuoi dati si trovano su una griglia perfettamente regolare, come i pixel di una fotografia digitale. Presuppone una spaziatura uguale tra ogni data point e renderizza molto velocemente. Se le coordinate della tua griglia sono irregolari, magari i tuoi limiti di misurazione si deformano o si comprimono in prossimità di certe caratteristiche geografiche, usi pcolormesh. Calcola e disegna singoli quadrilateri per ogni singola cella, adattandosi esattamente alla forma distorta dei tuoi array di coordinate. Quando decidi quale funzione di Matplotlib chiamare, ignora l'aspetto che vuoi dare all'immagine finale e guarda rigorosamente alla forma matematica dei tuoi array di input: sono coppie sequenziali, flat list o matrici bidimensionali? Questo è tutto per questa volta. Grazie per aver ascoltato, e continua a sviluppare!
5

Flussi di Lavoro per Power-User: Stili e rcParams

4m 13s

Trasforma istantaneamente l'aspetto dei tuoi plot. Nel nostro episodio finale, esploriamo come utilizzare gli style sheets predefiniti e personalizzare dinamicamente le impostazioni globali usando rcParams.

Download
Ciao, sono Alex di DEV STORIES DOT EU. Matplotlib, episodio 5 di 5. Spesso vedi persone scrivere venti righe di codice ripetitivo per modificare tick label, grid line e font per ogni singolo plot che creano. Un singolo comando può applicare tutte queste modifiche istantaneamente a un intero progetto. Questo episodio tratta i workflow da power user: stili e rcParams. Il look standard di Matplotlib è molto riconoscibile, ma aggiornare manualmente i singoli elementi per ogni plot per adattarli a un'estetica specifica è inefficiente. Invece, usi gli style sheet. Matplotlib include diversi stili built-in. Chiami una funzione chiamata style dot use dal modulo pyplot e passi una stringa, come ggplot o classic. Se stai preparando una visualizzazione per una slide di presentazione con tema scuro, non devi cambiare manualmente il background in nero, gli assi in bianco e il testo in grigio chiaro. Esegui style dot use con dark underscore background all'inizio del tuo script. Ogni figure generata dopo quella riga eredita istantaneamente quello specifico look. Puoi persino combinare gli style sheet. Se passi una lista di nomi di stile, Matplotlib li applica in ordine da sinistra a destra. Gli stili elencati a destra sovrascriveranno i setting sovrapposti degli stili a sinistra. Ecco il punto chiave. Chiamare style dot use cambia lo stato globale per il resto della tua sessione Python. Se vuoi uno stile specifico solo per un particolare chart, usi un context manager chiamato style dot context. Apri il context, specifichi il nome dello stile e scrivi il tuo codice di plotting all'interno di quel blocco. Una volta terminato il blocco, i tuoi plot tornano a qualsiasi stile globale fosse attivo in precedenza. Sotto questi style sheet c'è un enorme dizionario di configurazione chiamato rcParams. La r e la c stanno per runtime configuration. Ogni property di default che Matplotlib usa per renderizzare una figure vive in questo dizionario. Font size, line width, dimensioni di default della figure e stili dei marker sono tutti mappati a specifiche chiavi stringa. Quando applichi uno style sheet, stai essenzialmente aggiornando in blocco il dizionario rcParams in background. Ma puoi anche interagirci direttamente per fare aggiustamenti granulari e dinamici. Mettiamo che tu abbia applicato uno stile che ti piace, ma la line width di default è troppo sottile per le tue esigenze. Accedi al dizionario rcParams, specifichi la chiave per lines dot linewidth e le assegni un nuovo valore numerico. Da quel momento in poi, ogni linea disegnata nella tua sessione avrà di default quello spessore maggiore. Matplotlib fornisce anche una convenience function chiamata rc per gestire questa operazione. Invece di modificare il dizionario chiave per chiave, chiami rc, passi un nome di gruppo top-level come font, e poi fornisci dei keyword argument per le property specifiche come weight o size. È un modo molto più pulito per aggiornare diversi setting correlati tutti in una volta. Puoi anche definire i tuoi stili custom. Uno style sheet è semplicemente un file di testo con estensione dot mplstyle. All'interno, contiene una semplice lista di coppie chiave-valore di rcParams. Salvi questo file, passi il suo path a style dot use, e il tuo corporate branding custom viene applicato istantaneamente a qualsiasi plot senza inquinare il tuo vero codice dei dati. Il vero potere della customizzazione di Matplotlib è disaccoppiare la tua logica dei dati dalle tue scelte estetiche. Impostare le regole globalmente mantiene le tue funzioni di plotting snelle e garantisce coerenza visiva in tutta la tua codebase. Ti incoraggio a esplorare la documentazione ufficiale per vedere la lista completa delle runtime configuration disponibili e a provare a creare uno style sheet custom tu stesso, oppure visita devstories dot eu per suggerire argomenti per le serie future. Grazie per aver passato qualche minuto con me. Alla prossima, stammi bene.