Mapa hexagonal en Python con geopandas

Librería

geopandas

Autor principal

GeoPandas developers

En un mapa hexagonal (hexbin map o hexagonal tile map) cada región se representa con un hexágono del mismo tamaño, colocado aproximadamente en su posición geográfica. A diferencia de un mapa normal, las regiones pequeñas tienen el mismo peso visual que las grandes. Los ejemplos utilizan un archivo GeoJSON con un hexágono por cada estado de Estados Unidos y el número de colonias de abejas de cada estado.

Hexágonos de los estados de Estados Unidos

Lee el archivo GeoJSON con geopandas, proyéctalo a Web Mercator (EPSG 3857) para que los hexágonos sean regulares y dibújalo con plot.

import geopandas as gpd
import matplotlib.pyplot as plt

hexmap = gpd.read_file("https://raw.githubusercontent.com/holtzy/The-Python-Graph-Gallery/master/static/data/us_states_hexgrid.geojson.json")
hexmap = hexmap.to_crs(epsg = 3857)

fig, ax = plt.subplots()
hexmap.plot(ax = ax, color = "#A8DADC", edgecolor = "white", linewidth = 2)
ax.axis("off")
# plt.show()

Mapa hexagonal de los estados de Estados Unidos en Python

Etiquetas de los estados

Escribe la abreviatura de cada estado, guardada en la columna iso3166_2, en el centro de su hexágono.

import geopandas as gpd
import matplotlib.pyplot as plt

hexmap = gpd.read_file("https://raw.githubusercontent.com/holtzy/The-Python-Graph-Gallery/master/static/data/us_states_hexgrid.geojson.json")
hexmap = hexmap.to_crs(epsg = 3857)

fig, ax = plt.subplots()
hexmap.plot(ax = ax, color = "#457B9D", edgecolor = "white", linewidth = 2)

for geom, label in zip(hexmap.geometry, hexmap["iso3166_2"]):
    ax.annotate(label, (geom.centroid.x, geom.centroid.y), ha = "center", va = "center",
                color = "white", fontsize = 7)
ax.axis("off")
# plt.show()

Mapa hexagonal con etiquetas de los estados en Python

Color según una variable

Pasa una columna numérica a column para colorear cada hexágono. En este caso, el número de colonias de abejas de cada estado.

import geopandas as gpd
import matplotlib.pyplot as plt

hexmap = gpd.read_file("https://raw.githubusercontent.com/holtzy/The-Python-Graph-Gallery/master/static/data/us_states_hexgrid.geojson.json")
hexmap = hexmap.to_crs(epsg = 3857)

fig, ax = plt.subplots()
hexmap.plot(column = "bees", cmap = "YlOrBr", edgecolor = "white", linewidth = 2,
            legend = True, legend_kwds = {"label": "Colonias de abejas", "orientation": "horizontal", "shrink": 0.6}, ax = ax)

for geom, label in zip(hexmap.geometry, hexmap["iso3166_2"]):
    ax.annotate(label, (geom.centroid.x, geom.centroid.y), ha = "center", va = "center", fontsize = 6)
ax.axis("off")
# plt.show()

Mapa hexagonal coloreado según una variable en Python

Consulta también cómo crear un mapa de coropletas con geopandas, que utiliza la forma real de las regiones.

Fundamentals of Data Visualization

A Primer on Making Informative and Compelling Figures

Comprar en Amazon
Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon

También te puede interesar