v0.20 — Edizione 2026. Padroneggia Folium v0.20 in questo audio corso edizione 2026. Scopri come collegare l'ecosistema dei dati di Python con Leaflet.js per creare mappe web interattive e potenti.
Analisi GeospazialeMappatura InterattivaVisualizzazione dei Dati
Scopri l'astrazione principale di Folium: collegare l'ecosistema dei dati di Python con Leaflet.js. Impara a inizializzare una Map, impostare la posizione di partenza e renderizzare la tua prima mappa HTML interattiva.
3m 58s
2
Personalizzare il Canvas
Impara a trasformare lo stile visivo della tua mappa usando tileset e bounds. Tratteremo xyzservices, map tiles personalizzati e come limitare lo scorrimento dell'utente.
3m 43s
3
Posizionare i dati
Padroneggia l'arte di inserire pin sulla tua mappa Folium. Esploreremo i Markers, le Icons personalizzate e la differenza cruciale tra Tooltips e Popups.
3m 56s
4
Interattività avanzata nei Popups
Porta i tuoi popup al livello successivo incorporando contenuti ricchi. Impara ad analizzare l'HTML, incorporare i DataFrames di Pandas, iniettare grafici Vega e ottimizzare con il lazy loading.
3m 42s
5
Organizzare Vettori e Layers
Disegna percorsi e raggruppa i tuoi dati per mantenere le mappe pulite. Esploreremo le PolyLines, i FeatureGroups e come dare il controllo agli utenti con i LayerControls.
3m 23s
6
Sovrapposizioni spaziali con GeoJSON
Sblocca funzionalità spaziali avanzate importando GeoJSON in Folium. Impara a mappare i confini e a integrarli perfettamente con i DataFrames di GeoPandas.
3m 21s
7
Distribuzioni con le mappe Choropleth
Combina geografia e statistica usando le mappe Choropleth. Impara a collegare i DataFrames di Pandas alle regioni GeoJSON per visualizzare le distribuzioni dei dati.
3m 49s
8
Performance e Plugins
Potenzia le tue mappe con i plugin di Folium. Scopri i MarkerClusters per dataset di punti enormi, le HeatMaps per la densità e gli strumenti Draw per le interazioni sulla mappa.
3m 37s
Episodi
1
Il ponte di Folium
3m 58s
Scopri l'astrazione principale di Folium: collegare l'ecosistema dei dati di Python con Leaflet.js. Impara a inizializzare una Map, impostare la posizione di partenza e renderizzare la tua prima mappa HTML interattiva.
Ciao, sono Alex di DEV STORIES DOT EU. Folium, episodio 1 di 8. Hai un enorme dataset di coordinate geografiche e ti serve una mappa interattiva per interpretarle. Il problema è che creare mappe interattive di solito significa uscire da Python e combattere con le librerie JavaScript. Il bridge di Folium è la soluzione proprio a questo mal di testa.
Folium è una libreria Python che fa da traduttore tra i tuoi workflow di dati e Leaflet dot js. Leaflet è una libreria JavaScript open-source molto popolare, usata per creare mappe interattive mobile-friendly. Come data scientist, preferisci fare il lavoro pesante – manipolazione, filtraggio e analisi dei dati – in Python. Folium ti permette di rimanere in questo ambiente. Prende i tuoi oggetti Python e genera l'HTML e il JavaScript necessari per renderizzare una mappa Leaflet. Ottieni l'interattività di una mappa web senza scrivere una singola riga di codice frontend.
Iniziare è semplice. Installi la libreria usando package manager standard come pip, eseguendo pip install folium. Una volta installata, il workflow principale ruota attorno alla creazione di un oggetto map di base. Mettiamo che tu stia valutando delle potenziali coordinate per la posizione di un nuovo negozio. Hai la latitudine e la longitudine esatte e devi visualizzare l'area circostante.
Nel tuo script, importi la libreria Folium. Quindi chiami la funzione Map associata a quella libreria. Questa funzione richiede un'informazione fondamentale per essere immediatamente utile: il punto centrale di partenza. Passi questo punto centrale usando il parametro location. Il parametro location si aspetta una semplice lista o tupla contenente due numeri. La latitudine viene prima, seguita dalla longitudine. Ad esempio, passi 45.52 per la latitudine e meno 122.68 per la longitudine. Quando lo esegui, Folium costruisce un oggetto map centrato esattamente su quelle coordinate.
Ora hai un oggetto map che esiste in memoria. Come lo visualizzi in pratica? Folium offre due strade principali, a seconda del tuo workspace. Se stai lavorando dentro un Jupyter Notebook, il processo è fluido. Ti basta digitare il nome del tuo oggetto map sull'ultima riga della cella ed eseguirlo. L'ambiente del notebook riconosce la ricca rappresentazione HTML dell'oggetto e renderizza automaticamente la mappa interattiva di Leaflet direttamente sotto la tua cella di codice. Puoi subito fare pan e zoom per ispezionare quella potenziale posizione del negozio.
Tuttavia, spesso hai bisogno di condividere questa mappa con stakeholder che non usano Jupyter. È qui che entra in gioco il secondo metodo. Prendi il tuo oggetto map e chiami il metodo save. Passi a questo metodo un nome file come string, ad esempio index dot html. Folium prende tutta la logica Leaflet sottostante, le coordinate e le istruzioni di rendering, e le scrive in un file HTML standalone sul tuo hard drive. Chiunque può fare doppio clic su quel file e aprire una mappa interattiva completamente funzionante nel proprio browser web standard. Non ti serve nessun ambiente Python per visualizzare il risultato finale.
Ecco il punto chiave. Folium non renderizza le mappe nativamente in Python; è semplicemente un engine che genera il codice web necessario affinché un browser le renderizzi. Agisce strettamente da bridge verso Leaflet, rendendo i tuoi dati Python istantaneamente web-ready.
Se stai trovando utili questi episodi e vuoi supportare lo show, puoi cercare DevStoriesEU su Patreon: ogni piccolo aiuto ci permette di tenere le luci accese. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a sviluppare!
2
Personalizzare il Canvas
3m 43s
Impara a trasformare lo stile visivo della tua mappa usando tileset e bounds. Tratteremo xyzservices, map tiles personalizzati e come limitare lo scorrimento dell'utente.
Ciao, sono Alex di DEV STORIES DOT EU. Folium, episodio 2 di 8. Crei una bellissima mappa interattiva di un parco nazionale, ma nel momento in cui l'utente clicca e trascina, scivola via dalla costa e si perde in un infinito oceano grigio. Hai bisogno delle giuste immagini di sfondo e devi bloccare la camera esattamente dove si trovano i tuoi dati. Questo episodio è tutto dedicato alla personalizzazione del canvas.
Quando inizializzi una mappa Folium, di default utilizza le tile standard di OpenStreetMap. Sono quelle tile quadrate di immagini che il browser unisce per formare lo sfondo della mappa. Le mappe stradali standard non sono sempre la scelta giusta. Puoi cambiarlo usando il parametro tiles quando crei la tua mappa. Se vuoi uno sfondo sbiadito e minimalista per far risaltare i tuoi dati, puoi passare una semplice string come cartodb positron. Ma per un parco nazionale, probabilmente vorrai immagini satellitari o del terreno.
È qui che Folium si integra con un package chiamato xyzservices. Non devi impazzire a cercare link di map server di terze parti. Folium include centinaia di provider preconfigurati. Ti basta accedere al dictionary providers dal module map di Folium e scegliere quello che ti serve. Potresti scegliere una mappa topografica Esri o uno specifico feed satellitare. Passi quell'object provider direttamente al parametro tiles, e Folium gestisce le request al server dietro le quinte.
A volte, la tua organizzazione ha un map server privato, o hai bisogno di un overlay altamente specializzato che non è nella lista built-in. In quel caso, puoi passare una string URL custom al parametro tiles. I map server usano una struttura URL standardizzata che contiene dei placeholder per il livello di zoom, di solito rappresentato da Z, insieme alle coordinate X e Y della tile della mappa. Fornisci direttamente quel template URL. C'è un requisito fondamentale qui. Quando usi un URL custom, Folium ti obbliga a includere un secondo parametro chiamato attr, che sta per attribution. Devi fornire una string per accreditare la fonte dei dati. Senza il parametro attribution, Folium si rifiuterà di renderizzare le tile custom.
Ora la tua mappa ha il perfetto sfondo topografico. Ma hai ancora il problema del panning. Gli utenti possono allontanarsi troppo dal parco nazionale facendo scroll. Puoi evitarlo impostando dei limiti al viewport. Quando crei il map object, definisci una bounding box usando quattro parametri specifici: latitudine minima, latitudine massima, longitudine minima e longitudine massima. Passi le coordinate dei confini del tuo parco a questi parametri.
Ecco il punto chiave. Definire semplicemente quelle quattro coordinate non impedisce all'utente di fare panning. Per bloccare attivamente il viewport, devi anche impostare il parametro max bounds su true. Quando lo abiliti, Folium istruisce il mapping engine sottostante di riportare la camera in posizione se l'utente prova a trascinare la visuale fuori dal rettangolo che hai specificato. Sono liberi di fare zoom in e zoom out per esplorare i sentieri, ma la mappa li blocca fisicamente impedendogli di perdersi nell'oceano.
Impostare dei limiti rigidi mantiene il tuo pubblico concentrato sulla geografia rilevante, e abbinare questi limiti con le giuste tile del terreno dà ai tuoi dati l'esatto contesto che meritano. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a sviluppare!
3
Posizionare i dati
3m 56s
Padroneggia l'arte di inserire pin sulla tua mappa Folium. Esploreremo i Markers, le Icons personalizzate e la differenza cruciale tra Tooltips e Popups.
Ciao, sono Alex di DEV STORIES DOT EU. Folium, episodio 3 di 8. Una mappa è essenzialmente un'immagine statica finché non inizi a posizionare dei pin per evidenziare location specifiche. Ma questi pin non devono per forza avere tutti lo stesso aspetto di default a forma di goccia blu. Localizzare i dati in modo efficace significa fornire ai tuoi utenti indicazioni visive e contesto interattivo direttamente a livello di coordinate.
Per posizionare un punto di interesse sulla tua mappa, usi la classe folium dot Marker. L'unico requisito assoluto per creare un marker è il parametro location. Gli passi una sequenza di due numeri, prima la latitudine, seguita dalla longitudine. Una volta creato questo oggetto marker nel tuo codice, lo colleghi alla tua mappa di base usando il metodo add to. Questo ti dà un pin standard posizionato esattamente a quelle coordinate.
Ma un semplice pin indica all'utente solo che qualcosa esiste in quel punto. Deve comunicare di cosa si tratta. Folium ti offre due modi principali per attaccare del testo a un marker, e i developer li confondono continuamente. La distinzione è semplice. Un tooltip è un testo on hover. Un popup è una label al click.
Pensa a una mappa che mostra diverse località sciistiche su una catena montuosa. Vuoi che il tooltip contenga il nome della località, come Aspen o Snowbird. Questo permette all'utente di scansionare rapidamente la mappa spostando il cursore da un pin all'altro, vedendo i nomi apparire e scomparire all'istante. Il popup è riservato alle informazioni secondarie che richiedono l'intenzione di leggerle. Quando l'utente clicca attivamente sul pin di Aspen, il popup rivela dettagli come un dislivello di tremila piedi o le condizioni meteo attuali. Usi il tooltip per un'identificazione rapida, e il popup per un contesto più approfondito. Li configuri entrambi passando del testo ai parametri tooltip e popup quando crei il tuo marker.
Ora, guardare cinquanta pin blu identici è una pessima user experience. Puoi differenziarli visivamente usando la classe folium dot Icon. Quando crei il tuo marker, puoi passare un oggetto Icon custom al suo parametro icon. Questo ti permette di alterare il colore del pin stesso e la grafica visualizzata al suo interno.
Per il parametro color, Folium accetta diversi nomi di string standard come red, green, purple o orange. Tornando alle nostre località sciistiche, potresti categorizzarle visivamente marcando in verde le località per principianti, e in rosso quelle solo per esperti.
Per cambiare il simbolo all'interno del pin, usi il parametro icon all'interno della classe Icon. Di default, Folium usa i glyphicon di Bootstrap. Puoi passare nomi come cloud o info dash sign per ottenere quelle grafiche specifiche all'interno del tuo marker. Se la libreria di default non ha il simbolo esatto di cui hai bisogno, puoi passare alle icone di Font-Awesome. Lo fai impostando il parametro prefix nel tuo oggetto Icon alla string f a. Una volta cambiato il prefix, puoi passare qualsiasi nome standard di Font-Awesome al parametro icon. Questo apre una libreria enorme di simboli, permettendoti di posizionare la grafica di un fiocco di neve sulle tue località invernali invece di una forma generica.
Ecco il punto chiave. I marker sulla tua mappa portano la vera narrazione dei tuoi dati spaziali. Combinare colori distinti, simboli riconoscibili e la giusta divisione tra testo on hover e azioni al click trasforma una semplice griglia di coordinate in un'interfaccia altamente leggibile.
Grazie per l'ascolto. Statemi bene, tutti.
4
Interattività avanzata nei Popups
3m 42s
Porta i tuoi popup al livello successivo incorporando contenuti ricchi. Impara ad analizzare l'HTML, incorporare i DataFrames di Pandas, iniettare grafici Vega e ottimizzare con il lazy loading.
Ciao, sono Alex di DEV STORIES DOT EU. Folium, episodio 4 di 8. Clicchi su un marker sulla mappa aspettandoti un'analisi dettagliata, ma invece ti ritrovi con un blocco di plain text compresso e illeggibile. Potresti pensare che i pin sulla mappa siano pensati solo per brevi label. In realtà, puoi embeddare un'intera data table interattiva o un mini-chart direttamente all'interno di quel pin. Ed è proprio di questo che parliamo oggi: interattività avanzata nei popup.
Di default, i popup di Folium accettano una semplice stringa di testo. Ma sono progettati per gestire molto di più. Pensa a una mappa immobiliare. Quando un utente clicca sul pin di una casa, l'indirizzo non basta. Vuoi mostrare una foto dell'immobile e una data table chiara e formattata con le statistiche della casa. Lo ottieni trattando il popup come una pagina web isolata.
Innanzitutto, puoi passare stringhe di raw HTML direttamente al popup. Impostando l'argomento parse html su true, indichi a Folium di renderizzare la stringa come elementi web strutturali, anziché mostrare letteralmente le parentesi angolari sullo schermo. Questo ti permette di includere tag image, header e la formattazione web standard direttamente all'interno del marker.
Per layout più avanzati, usi un componente specifico del framework alla base di Folium, chiamato Branca IFrame. Un IFrame crea una finestra isolata e scorrevole all'interno del popup. Questo è fondamentale quando embeddi strutture complesse, perché impedisce allo styling interno del popup o alle immagini grandi di uscire e rompere il layout principale della tua mappa. Crei la tua stringa HTML, la passi all'oggetto IFrame, imposti una width e una height fisse, e poi passi quell'IFrame direttamente al tuo Popup.
Questo workflow si sposa perfettamente con le librerie di data analysis. Non devi costruire manualmente tabelle HTML per mostrare le metriche. Se hai un DataFrame Pandas che contiene le statistiche della proprietà, ti basta chiamare il metodo standard Pandas to html. Prendi quella stringa HTML generata, la passi al tuo IFrame, e il tuo pin sulla mappa ora contiene una data table accurata e completamente formattata.
Puoi spingerti oltre usando le classi Folium Vega e VegaLite. Queste classi ti permettono di embeddare visualizzazioni interattive. Invece di passare HTML, passi una specifica JSON di un chart alla classe Vega, e la assegni direttamente al popup. Ora, cliccando sul pin della casa, viene mostrato un line chart dinamico dei valori storici dell'immobile, accanto alla data table.
Ecco il punto chiave. Caricare tutto questo rich content crea un enorme bottleneck di performance. Se la tua mappa immobiliare ha cinquemila pin di case, e ogni popup contiene una data table, un link a un'immagine e un chart Vega, il browser cercherà di renderizzare tutte e cinquemila le strutture nascoste nel momento in cui la mappa si carica. La pagina si freezerà all'istante.
Per risolvere questo problema, l'oggetto Popup accetta un parametro chiamato lazy. Impostando lazy su true, Folium inizialmente non inietta il contenuto del popup nella pagina web. La mappa renderizza i marker, ma l'HTML pesante, gli IFrame e i chart vengono completamente ignorati. Il browser recupera e renderizza il contenuto solo nel momento esatto in cui l'utente clicca su un pin specifico. Questo differisce il costo computazionale, il che significa che una mappa con migliaia di popup pesanti e interattivi si caricherà alla stessa velocità di una mappa con label di testo standard.
Il vero potere di una web map non è dove posizioni i pin, ma quanto contesto puoi inserire al loro interno senza degradare la user experience. Grazie per l'ascolto. Statemi bene tutti.
5
Organizzare Vettori e Layers
3m 23s
Disegna percorsi e raggruppa i tuoi dati per mantenere le mappe pulite. Esploreremo le PolyLines, i FeatureGroups e come dare il controllo agli utenti con i LayerControls.
Ciao, sono Alex di DEV STORIES DOT EU. Folium, episodio 5 di 8. Immagina di tracciare cinquanta percorsi di consegna e una dozzina di magazzini su un'unica mappa. Il risultato è una rete caotica di linee che si incrociano e che nessuno riesce a leggere. Hai bisogno di un modo per permettere agli utenti di filtrare il rumore. È qui che entra in gioco l'organizzazione di vettori e layer.
Innanzitutto, devi disegnare i percorsi. Per rappresentare delle coordinate collegate su una mappa, usi la classe PolyLine di Folium. Una PolyLine prende una sequenza di coppie di latitudine e longitudine e disegna dei segmenti dritti tra di esse. Se hai le tracce GPS di un camion delle consegne, ti basta passare quella lista di coordinate all'oggetto PolyLine. Puoi configurare proprietà visive come colore, spessore e opacità. Questo ti permette di disegnare una linea blu spessa per una rotta di spedizione principale e una linea grigia sottile per un percorso di consegna locale.
Se colleghi una PolyLine direttamente alla tua base map, sarà sempre visibile. Per una mappa logistica complessa, questo è un errore.
Ecco il punto chiave. Invece di collegare le forme direttamente all'oggetto map, dovresti metterle dentro un FeatureGroup. Un FeatureGroup è un contenitore logico. Raggruppa elementi correlati in modo che possano essere gestiti come un'unica unità.
Nel nostro scenario logistico, inizi creando due FeatureGroup separati. Chiami il primo Delivery Routes e il secondo Warehouse Locations. Poi, mentre generi gli elementi della tua mappa, cambi la loro destinazione. Quando crei una PolyLine per il percorso di un camion, la aggiungi al gruppo Delivery Routes. Quando crei un marker standard per un edificio, lo aggiungi al gruppo Warehouse Locations. Una volta che tutti i tuoi singoli elementi sono stati smistati nei rispettivi contenitori, aggiungi entrambi i FeatureGroup all'oggetto map principale.
A questo punto, la mappa generata sembra identica a una in cui tutto è stato buttato direttamente sul base layer. L'output visivo non è cambiato, ma la struttura dati sottostante sì. Questa struttura è ciò che permette l'interazione dell'utente.
Per esporre questa struttura all'utente, istanzi un LayerControl di Folium e lo aggiungi alla mappa. Il LayerControl scansiona l'oggetto map, trova tutti i FeatureGroup che hai collegato e costruisce automaticamente un menu interattivo nell'angolo in alto dello schermo.
I tuoi FeatureGroup diventano degli overlay che puoi attivare e disattivare. L'utente vedrà una checkbox per Delivery Routes e un'altra checkbox per Warehouse Locations. Se lo schermo è troppo affollato, può deselezionare le rotte per ispezionare solo le strutture.
Il LayerControl separa i dati della tua mappa in due categorie: base layer e overlay. I base layer sono le tile della mappa sottostante, come una vista stradale o satellitare. Questi vengono presentati con dei radio button, perché solo una base map può essere attiva alla volta. Gli overlay sono i vettori e i marker che hai aggiunto tramite i FeatureGroup. Questi usano delle checkbox, permettendo a più set di dati di sovrapporsi l'uno all'altro.
La singola regola più importante dell'interattività della mappa è che la user interface può manipolare solo ciò che la tua struttura dati definisce. Se colleghi ogni linea e marker alla root map, il tuo menu del layer control sarà vuoto e l'utente non controllerà nulla.
Per questo episodio è tutto. Alla prossima!
6
Sovrapposizioni spaziali con GeoJSON
3m 21s
Sblocca funzionalità spaziali avanzate importando GeoJSON in Folium. Impara a mappare i confini e a integrarli perfettamente con i DataFrames di GeoPandas.
Ciao, sono Alex di DEV STORIES DOT EU. Folium, episodio 6 di 8. Tracciare mille singoli marker su una mappa è semplice. Ma cosa succede quando devi disegnare i confini esatti e frastagliati di tutti i cinquanta stati degli Stati Uniti, o i tortuosi confini amministrativi di un'intera città? Tracciare manualmente ogni singolo vertice non è un'opzione. Gli overlay spaziali con GeoJSON sono la soluzione.
GeoJSON è il formato standard del settore per rappresentare elementi geografici complessi. Mentre un marker standard rappresenta una singola coordinata, GeoJSON gestisce linee, poligoni e multi-polygons. Quando hai a che fare con confini reali, ti ritrovi a gestire array contenenti migliaia di coppie di latitudine e longitudine che definiscono una singola forma. Folium utilizza la classe GeoJson per prendere questi densi dati sui confini e renderizzarli come un overlay visivo sulla tua mappa di base.
Prendiamo come esempio la mappatura dei confini dei distretti di una città. Hai i dati spaziali per venti distretti e devi visualizzarne i contorni su una mappa stradale. Alcuni distretti sono semplici poligoni, mentre altri possono includere isole o zone disconnesse, richiedendo dei multi-polygons. Folium ti offre diversi modi per importare questi dati complessi. Puoi passare una string contenente un URL che punta direttamente a un file GeoJSON ospitato online. Puoi passare un path di un file locale. Puoi persino passare un dictionary Python parsed se hai già caricato i dati in memoria.
Ecco il punto chiave. Folium non si limita a leggere file di testo statici. Si integra nativamente con il più ampio ecosistema data science di Python. La classe GeoJson accetta qualsiasi oggetto Python che implementi la property standard geo-interface. Questo è un protocollo comune nelle librerie spaziali Python che consente a diversi strumenti di condividere strutture di dati geografici senza problemi.
Grazie a questo standard, non devi estrarre manualmente le string JSON se stai già utilizzando strumenti di analisi moderni. Puoi passare un GeoDataFrame di GeoPandas direttamente a Folium. Per farlo, per prima cosa carichi i confini dei tuoi distretti in un GeoDataFrame usando GeoPandas. Successivamente, generi la tua mappa di base standard centrata sulla città. Quindi, chiami la classe GeoJson e le passi semplicemente il tuo GeoDataFrame come argomento principale. Infine, aggiungi l'oggetto GeoJson appena creato alla tua mappa di base.
Folium legge la geo-interface del dataframe, estrae le forme geometriche per tutti i venti distretti della città e disegna i confini esatti sulle tile della mappa. Eviti completamente la manipolazione dei file grezzi e passi direttamente da una struttura dati a una visualizzazione.
Tieni a mente che questo specifico processo di overlay riguarda esclusivamente la visualizzazione dei confini spaziali. Non si tratta di unire dati statistici a quei confini per colorarli in base alla popolazione o al reddito. Questo è un concetto completamente diverso. La classe GeoJson serve esclusivamente a definire le forme fisiche e a posizionarle sulla mappa.
La potenza del layer GeoJSON di Folium non sta solo nel poter disegnare confini geografici complessi e multi-parte, ma nel fatto che funge da ponte diretto tra oggetti analitici come un GeoDataFrame e la tua mappa interattiva finale, richiedendo zero manipolazione manuale delle coordinate.
Questo è tutto per questo episodio. Grazie per l'ascolto e continua a sviluppare!
7
Distribuzioni con le mappe Choropleth
3m 49s
Combina geografia e statistica usando le mappe Choropleth. Impara a collegare i DataFrames di Pandas alle regioni GeoJSON per visualizzare le distribuzioni dei dati.
Ciao, sono Alex di DEV STORIES DOT EU. Folium, episodio 7 di 8. La mappa più riconoscibile nella data science colora le regioni geografiche in base a un valore statistico. Far corrispondere i confini geografici ai dati del tuo spreadsheet di solito richiede una complessa operazione di merge in una libreria spaziale separata. In Folium, la classe Choropleth gestisce la geometria, il data binding e il color scaling in un singolo passaggio.
Una mappa coropleta associa dati numerici ai confini geografici. Fornisci le forme, fornisci i numeri, e la mappa colora le forme in base a quei numeri. Prendi il classico esempio della mappatura del tasso di disoccupazione negli stati americani. Per costruirla, istanzi la classe Choropleth e le passi quattro informazioni fondamentali.
La prima sono i dati geografici. Passi un file GeoJSON contenente i confini dei poligoni per gli stati americani al parametro geo data.
La seconda sono i dati statistici. Passi il tuo DataFrame Pandas contenente le statistiche sulla disoccupazione al parametro data.
In terzo luogo, dici a Folium quali parti del tuo DataFrame sono importanti. Fornisci una lista di esattamente due nomi di colonna al parametro columns. La prima colonna contiene l'identificatore della regione, come l'abbreviazione dello stato. La seconda colonna contiene il valore numerico che vuoi visualizzare, ovvero il tasso di disoccupazione.
Ecco il punto chiave. Il DataFrame e le forme geografiche sono oggetti completamente separati. Devi dire esplicitamente a Folium come collegarli usando il parametro key on. Questo parametro accetta una stringa che rappresenta il path preciso all'interno del file GeoJSON in cui si trova l'identificatore corrispondente. Se il tuo GeoJSON definisce uno stato usando una feature property chiamata id, il tuo parametro key on sarà la stringa feature dot id. Questo path deve corrispondere perfettamente all'identificatore nella prima colonna del tuo DataFrame. Quando corrispondono, i dati statistici fanno il binding con la geometria.
Una volta fatto il binding dei dati, la mappa applica i colori. Il parametro fill color accetta palette standard come YlGn per un gradiente dal giallo al verde. Di default, Folium prende i valori minimi e massimi nel tuo dataset e taglia la color scale in fette matematiche uguali. Se i tuoi dati sulla disoccupazione sono molto sbilanciati, questo slicing lineare potrebbe raggruppare la maggior parte degli stati in un'unica banda di colore, rendendo la mappa inutile. Per controllare questo comportamento, passa una lista di soglie numeriche specifiche al parametro bins. Questo forza la color scale a spostarsi esattamente dove i tuoi dati si interrompono naturalmente, dandoti il pieno controllo sulla distribuzione visiva.
I dataset del mondo reale spesso hanno dei gap. Se a uno stato nel tuo file GeoJSON dei confini manca una riga corrispondente nel tuo DataFrame, Folium disegnerà comunque il confine ma lascerà l'interno senza colore. Gestisci queste regioni vuote con il parametro nan fill color. Impostarlo su una tonalità neutra come il grigio assicura che i dati mancanti siano contrassegnati esplicitamente senza distrarre dal resto della mappa.
L'allineamento tra la key del DataFrame e il path della property GeoJSON è il single point of failure per la maggior parte delle mappe coroplete. Imposta correttamente il parametro key on, e la mappa si costruisce da sola.
Se trovi utili questi deep dive tecnici, puoi supportare lo show cercando DevStoriesEU su Patreon. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a sviluppare!
8
Performance e Plugins
3m 37s
Potenzia le tue mappe con i plugin di Folium. Scopri i MarkerClusters per dataset di punti enormi, le HeatMaps per la densità e gli strumenti Draw per le interazioni sulla mappa.
Ciao, sono Alex di DEV STORIES DOT EU. Folium, episodio 8 di 8. Plottare cento punti su una mappa web è facile. Plottane diecimila, e il tuo browser si bloccherà completamente. Il Document Object Model semplicemente non riesce a gestire così tanti elementi grafici individuali tutti insieme. La soluzione a questo collo di bottiglia sono le performance e i plugin.
Hai un dataset di centomila punti di prelievo dei taxi in una città. Se fai un loop su quella lista e aggiungi dei marker standard direttamente alla tua base map, la pagina andrà in crash prima ancora di finire il caricamento. È qui che entra in gioco il plugin MarkerCluster. Invece di attaccare i punti direttamente alla mappa, crei un oggetto cluster dedicato. Fai un loop sul tuo dataset, aggiungi ogni singolo punto di prelievo a questo oggetto cluster, e poi attacchi l'intero cluster alla mappa alla fine.
Quando la mappa si carica completamente zoomata all'indietro, il browser non cerca di disegnare centomila pin. Disegna alcuni grandi cerchi con dei numeri all'interno, che rappresentano il conteggio totale delle posizioni in quell'area estesa. Man mano che fai zoom in, quegli enormi cluster si dividono dinamicamente in cluster più piccoli e localizzati. Se clicchi su un cerchio numerato, la mappa calcola automaticamente i confini e fa zoom su quella specifica regione. Gestisce la matematica spaziale in background, assicurandosi che il browser renderizzi i singoli marker solo quando sei abbastanza vicino da poterli effettivamente vedere.
A volte, le posizioni esatte dei punti non sono quello che hai davvero bisogno di comunicare. Vuoi vedere la densità. Il plugin HeatMap prende quella stessa enorme lista di coordinate dei taxi e renderizza un gradiente di colore fluido invece di migliaia di pin sovrapposti. Passi la tua lista raw di coppie di latitudine e longitudine direttamente nella funzione heatmap, e la attacchi alla mappa. Il plugin calcola la concentrazione spaziale dei tuoi dati. Le zone di prelievo ad alta densità brillano intensamente, mentre le aree più sparse si dissolvono. È computazionalmente molto più leggero per il browser renderizzare questo singolo overlay rispetto a forme vettoriali discrete, e rivela istantaneamente gli hotspot senza trasformare lo schermo in un caotico disastro di icone.
Fino a questo punto, le mappe sono state strettamente read-only. Il plugin Draw cambia completamente questo comportamento. Aggiunge una toolbar interattiva direttamente alla user interface. Abiliti il plugin nel tuo script Python, e quando l'utente apre il file risultante, può cliccare sui tool per abbozzare poligoni custom, disegnare linee, o rilasciare i propri marker sopra i tuoi dati dei taxi.
Ecco il punto chiave. Queste forme disegnate non sono solo pixel morti su uno schermo. Generano dati spaziali validi. Un utente può disegnare un perimetro di confine intorno a un quartiere specifico con un'alta domanda di taxi ed esportare l'esatta forma come file GeoJSON direttamente dalla toolbar. Questo trasforma la tua visualizzazione da un report statico a un tool attivo di selezione e annotazione.
I plugin di Folium colmano il divario tra i semplici script Python e il web mapping front-end più pesante, dandoti performance avanzate nel browser senza costringerti a scrivere JavaScript. Ti incoraggio a esplorare la documentazione ufficiale, a provare questi tool hands-on, o a visitare devstories dot eu per suggerire argomenti di cui vorresti sentire parlare in una serie futura. Questo è tutto per questo episodio. Grazie per l'ascolto, e continua a sviluppare!
Tap to start playing
Browsers block autoplay
Share this episode
Episode
—
Copy this episode in another language:
Questo sito non utilizza cookie. Il nostro fornitore di hosting potrebbe registrare il tuo indirizzo IP a fini statistici. Scopri di più.