Sbloccare il potenziale delle mappe esagonali per l’analisi dei dati

Sam Ballye nell’Unsplash

In genere, quando vogliamo visualizzare una variabile in un territorio utilizzando mappe coropletiche, utilizziamo geometrie amministrative comunemente note. Ad esempio, se volessimo vedere i tassi di disoccupazione in tutta Europa, potremmo visualizzarli in base ai rispettivi stati all’interno di ciascun paese.

Tuttavia, le regioni amministrative sono spesso irregolari e di dimensioni diverse le une dalle altre. Per questa ragione, un’alternativa utile per visualizzare qualsiasi variabile in un territorio è utilizzare esagoni per dividerlo. I vantaggi includono la geometria bilanciata per migliori confronti regionali e una migliore copertura territoriale. Inoltre, le mappe esagonali offrono il vantaggio di ridurre al minimo i pregiudizi visivi, poiché forniscono un’equa rappresentazione delle aree, a differenza dei tradizionali confini amministrativi, che a volte possono distorcere la percezione dei dati a causa delle loro forme e dimensioni irregolari.

In questo articolo, forniremo una spiegazione passo passo su come creare mappe esagonali in Python. Per raggiungere questo obiettivo, utilizzeremo due librerie che semplificano il processo di creazione della mappa: H3 e Plotly.

Il set di dati utilizzato in questo articolo è disponibile sul portale open data della città di Barcellona. Questo portale di dati aperti ospita dati demografici, economici e sociologici sulla città di Barcellona, ​​tutti liberamente accessibili. Il set di dati che stiamo utilizzando contiene informazioni su tutti gli hotel di Barcellona, ​​inclusa la loro ubicazione. È possibile scaricare il file dal seguente collegamento.

Il numero di hotel sarà la variabile che visualizzeremo sulla mappa esagonale. Le seguenti sezioni dell’articolo spiegheranno passo dopo passo come creare questa visualizzazione.

Il primo passo della nostra analisi, dopo aver scaricato il file, è procedere con la lettura e la pulizia dei dati. In questo caso, il set di dati contiene molte colonne che non sono rilevanti per la nostra analisi e non le esamineremo. Selezioneremo specificatamente il nome dell’hotel, la sua posizione geografica (latitudine e longitudine) ed eventualmente un attributo relativo alla sua posizione (anche se non li utilizzeremo in questo caso particolare). Una volta selezionate queste colonne, le rinomineremo con nomi più semplici e quindi il nostro set di dati sarà pronto per la visualizzazione.

Set di dati dell’hotel (immagine creata dall’autore)

Per visualizzare i dati utilizzando una mappa esagonale, il nostro primo passo è creare la griglia. Per raggiungere questo obiettivo, utilizzeremo il Biblioteca H3sviluppato da Uber. IL get_hexagon_grid la funzione è responsabile della creazione della griglia esagonale sotto forma di a GeoDataFrame. Si inizia creando un esagono in una posizione specifica (latitude E longitude), in questo caso, il centro di Barcellona. La dimensione di questo esagono è definita da resolution parametro. Successivamente, vengono generati ulteriori esagoni della stessa dimensione concentricamente attorno all’esagono centrale. Il numero di anelli concentrici da creare è determinato da ring_size parametro. Infine, questa raccolta di esagoni viene convertita in a GeoDataFramedove a ogni esagono viene assegnato un ID univoco corrispondente all’ID fornito dalla libreria H3.

Anche se in questo articolo non approfondiremo le specifiche di ciascuna funzione utilizzata per costruire la griglia esagonale, i lettori interessati possono fare riferimento alla documentazione della libreria per una comprensione dettagliata di come l’abbiamo applicata.

Il grafico seguente illustra come funzionano i parametri resolution E ring_size influenzare la griglia creata. Resolution controlla la dimensione degli esagoni, il che significa che risoluzioni più elevate producono esagoni più piccoli. D’altra parte, il ring_size Il parametro governa il numero di anelli concentrici di esagoni creati attorno all’esagono centrale. In altre parole, un più grande ring_size porta ad un maggior numero di anelli concentrici. Nel grafico seguente, tutti i grafici hanno gli stessi limiti dell’asse. Come potete osservare, per coprire la stessa area, utilizzare una risoluzione maggiore richiede più anelli perché, come accennato in precedenza, tutti gli esagoni creati hanno la stessa dimensione dell’esagono centrale.

Griglie esagonali con varie risoluzioni e dimensioni degli anelli

Il prescelto resolution dipenderà dalle variazioni della variabile che vogliamo rappresentare in un’area specifica. Se c’è una variazione significativa, un valore più alto resolution sarà considerato. In questo caso particolare, una risoluzione di 9 è stato selezionato. Inoltre, il ring_size dipenderà dalla regione che intendiamo coprire e dal resolution precedentemente scelto. In questo caso specifico, a ring_size Di 45 è sufficiente a coprire l’intera area della città di Barcellona. Non entreremo nei dettagli di come siamo arrivati ​​a questa conclusione. In termini generali, abbiamo ottenuto il riquadro di delimitazione del poligono della città di Barcellona e determinato il numero di anelli necessari per coprire quell’area.

Di seguito troverai la creazione della rete esagonale sotto forma di a GeoDataFrameutilizzando i parametri precedentemente descritti e il get_hexagon_grid funzione.

Come puoi vedere sopra, il get_hexagon_grid la funzione fornisce a GeoDataFrame con due colonne: la prima colonna serve come ID univoco assegnato a ciascun poligono dalla libreria H3, mentre la seconda colonna contiene il poligono vero e proprio ed è denominata geometry.

Dopo aver creato la griglia esagonale è necessario assegnare ciascun albergo all’esagono di appartenenza. IL calculate_hexagon_ids La funzione calcola l’esagono a cui appartiene ogni hotel e crea una nuova colonna chiamata Hexagon_ID per memorizzare queste informazioni.

Set di dati dell’hotel con la colonna “Hexagon_ID”.

Ora, il dataset di tutti gli hotel comprende anche informazioni sull’esagono in cui è situato ciascun hotel. Questa informazione si trova nel Hexagon_ID colonna come identificatore alfanumerico.

Una volta assegnato l’ID dell’esagono, procediamo al calcolo dei dati che desideriamo visualizzare. In questo caso particolare, miriamo a visualizzare il numero di hotel in ciascun esagono. Per raggiungere questo obiettivo, eseguiamo un raggruppamento per Hexagon_ID e un count operazione. Inoltre, vogliamo implementare una funzionalità al passaggio del mouse che ci permetta di visualizzare i nomi degli hotel situati in ciascun esagono. Per raggiungere questo obiettivo, eseguiamo un’operazione di unione per tutti i nomi di hotel nel raggruppamento. Usiamo l’HTML <br> tag per indicare un’interruzione di riga nel join, poiché Plotly utilizza HTML per definire i suoi testi al passaggio del mouse.

DataFrame risultante dall’aggregazione

Come visto sopra, il dataframe raggruppato ha tre colonne: (1) Hexagon_IDche contiene l’identificatore esagonale univoco, (2) Countche contiene il numero di hotel in quell’esagono, e (3) Hotelsche contiene un elenco dei nomi degli hotel all’interno dell’esagono.

Una volta raggruppati i dati, possiamo procedere allo step finale, ovvero la creazione della mappa esagonale utilizzando Plotly.

IL create_choropleth_map la funzione è responsabile dell’elaborazione del set di dati raggruppati e del set di dati contenente le geometrie di ciascun esagono per generare la mappa esagonale. Questa mappa ci permette di visualizzare quali zone della città hanno una maggiore concentrazione di hotel.

Mappa termica della distribuzione degli hotel nella città di Barcellona (immagine creata dall’autore)

Per creare la mappa, utilizzeremo il file choropleth_mapbox funzione disponibile in Plotly Express. Questa funzione genera una mappa con la geometria definita (in questo caso, l’insieme di esagoni creati) e la colora in base al numero di hotel rilevati in ciascun esagono, utilizzando la scala di colori continua selezionata dall’utente. Quando passi il mouse su uno degli esagoni, puoi visualizzare l’elenco degli hotel situati all’interno di quell’esagono.

In questo caso, la mappa di sfondo utilizzata è carto-positronma questo parametro può essere facilmente regolato per utilizzare uno stile di mappa diverso che fornisca una migliore identificazione delle strade cittadine e dei punti di interesse, come ad esempio open-street-map. Inoltre, possiamo anche utilizzare una scala di colori diversa. Nel caso precedente abbiamo utilizzato il file Viridis scala di colori, mentre in questo caso stiamo utilizzando la scala di colori Reds scala di colori.

Mappa termica della distribuzione degli hotel nella città di Barcellona (immagine creata dall’autore)

La mappa è interattiva e ci permette di ingrandire l’area di interesse.
Come risulta evidente ingrandendo l’area dai toni rossastri, la maggior parte degli hotel di Barcellona si trovano intorno a Plaça de Catalunya.

La zona con la più alta concentrazione di hotel a Barcellona (Immagine creata dall’autore)

Le mappe coropletiche con regioni amministrative sono un mezzo prezioso per visualizzare la distribuzione di una variabile all’interno di un’area geografica. Presentano però lo svantaggio di fornire una visualizzazione distorta della distribuzione della variabile a causa della forma irregolare e delle dimensioni variabili delle regioni amministrative. Per questa ragione, l’uso di mappe esagonali con forme geometriche regolari costituisce un’alternativa molto utile per analizzare le distribuzioni su un territorio. In questo articolo, abbiamo fornito una spiegazione dettagliata di come creare una griglia esagonale utilizzando la libreria Uber H3 e di come questa griglia è stata utilizzata in una visualizzazione Plotly per rappresentare la distribuzione degli hotel a Barcellona.

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *