Skip to content

Mostrando mapas interactivos en Streamlit: tutoriales fáciles y ejemplos | st.map

Streamlit ha revolucionado la forma en que construimos aplicaciones de datos. Es una potente biblioteca de Python de código abierto que permite a los científicos de datos y desarrolladores crear aplicaciones web interactivas con facilidad. Una de sus características más llamativas es st.map, una función que permite a los usuarios crear y mostrar mapas interactivos. Este artículo profundizará en las complejidades de st.map, proporcionándote ejemplos prácticos y tutoriales para mejorar tus habilidades de visualización de datos.

En el mundo del análisis de datos y el aprendizaje automático, los datos de ubicación desempeñan un papel crucial. Ya sea rastreando la propagación de una enfermedad, analizando patrones de tráfico o comprendiendo los datos demográficos de los clientes, los mapas proporcionan una representación visual que es fácil de entender e interpretar. La función st.map de Streamlit es una herramienta que facilita la visualización de estos datos de ubicación.

Comprendiendo st.map en Streamlit

¿Qué es st.map en Streamlit?

En Streamlit, st.map es una función que te permite crear un mapa y trazar puntos de datos en él. Es un envoltorio alrededor de la biblioteca folium, una potente biblioteca de Python utilizada para visualizar datos geoespaciales. La función st.map toma un DataFrame de pandas que tiene columnas nombradas "lat" y "lon" o "latitude" y "longitude" y lo traza en un mapa.

import streamlit as st
import pandas as pd
 
## Crea un DataFrame de ejemplo con valores de latitud y longitud
data = pd.DataFrame({
    'latitude': [37.7749, 34.0522, 40.7128],
    'longitude': [-122.4194, -118.2437, -74.0060]
})
 
## Crea un mapa con los datos
st.map(data)

Este código simple creará un mapa y trazará los puntos de datos del DataFrame en él. El mapa se centrará automáticamente alrededor de los puntos de datos y ajustará el nivel de zoom en consecuencia.

Mostrando mapas en Streamlit

Mostrar mapas en Streamlit es tan sencillo como llamar a la función st.map con los datos apropiados. Sin embargo, para aprovechar al máximo esta característica, es importante entender cómo manipular los datos y personalizar el mapa para adaptarlo a tus necesidades.

Por ejemplo, puedes ajustar el nivel de zoom del mapa manualmente pasando un valor entero al parámetro zoom. Un valor más alto acercará el zoom a los puntos de datos, mientras que un valor más bajo alejará el zoom.

## Crea un mapa con un nivel de zoom especificado
st.map(data, zoom=10)

Agregando mapas GeoJSON a la aplicación Streamlit

¿Qué es GeoJSON?

GeoJSON es un formato para codificar una variedad de estructuras de datos geográficos. Admite una variedad de tipos de datos geográficos, incluyendo Punto, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon y GeometryCollection. GeoJSON utiliza el estándar JSON para crear mapas, lo que facilita su uso en una amplia variedad de aplicaciones.

Cómo agregar mapas GeoJSON a la aplicación Streamlit

Agregar mapas GeoJSON a tu aplicación Streamlit implica leer los datos GeoJSON en un DataFrame y luego pasar ese DataFrame a la función st.map. Aquí tienes un ejemplo de cómo puedes hacer esto:

import geopandas as gpd
 
# Lee los datos GeoJSON en un GeoDataFrame
gdf = gpd.read_file('ruta_hacia_tu_archivo_geojson.geojson')
 
# Convierte el GeoDataFrame en un DataFrame
df = pd.DataFrame(gdf)
 
# Crea un mapa con los datos GeoJSON
st.map(df)

En este ejemplo, estamos utilizando la biblioteca geopandas para leer los datos GeoJSON en un GeoDataFrame. Luego convertimos este GeoDataFrame en un DataFrame de pandas regular, que podemos pasar a la función st.map.

Mejorando los mapas con las características de st.map

La función st.map de Streamlit viene con una variedad de características que te permiten mejorar tus mapas. Estas incluyen agregar marcadores personalizados, ajustar el nivel de zoom y centrar automáticamente el mapa alrededor de tus puntos de datos.

Agregando marcadores personalizados

Agregar marcadores personalizados a tu mapa puede ayudarte a resaltar puntos de datos específicos. Para agregar marcadores personalizados, necesitas crear un DataFrame separado que contenga los valores de latitud y longitud de los puntos que deseas resaltar.

# Crea un DataFrame con los puntos que deseas resaltar
highlight = pd.DataFrame({
    'latitude': [37.7749],
    'longitude': [-122.4194]
})
 
# Agrega los puntos de resaltado al mapa
st.map(data, highlight)

En este ejemplo, estamos resaltando un solo punto en el mapa. El DataFrame highlight contiene los valores de latitud y longitud de este punto. Luego pasamos este DataFrame a la función st.map junto con nuestros datos originales.

Zoom y centrado automático

La función st.map centra automáticamente el mapa alrededor de tus puntos de datos y ajusta el nivel de zoom para que se ajuste a todos los puntos. Sin embargo, también puedes ajustar manualmente el nivel de zoom y el centro del mapa.

# Crea un mapa con un nivel de zoom y centro especificados
st.map(data, zoom=10, center=[37.7749, -122.4194])

En este ejemplo, establecemos el nivel de zoom en 10 y centramos el mapa alrededor de las coordenadas [37.7749, -122.4194]. El parámetro center toma una lista de dos valores: la latitud y longitud del punto alrededor del cual deseas centrar el mapa.

Solución de problemas de problemas con st.map

Si bien st.map es una herramienta poderosa, es posible que encuentres algunos problemas al usarlo. Un problema común es el error "st.map not working" (st.map no funciona). Esto suele ocurrir cuando el DataFrame pasado a st.map no contiene las columnas correctas o las columnas no tienen los nombres correctos. Recuerda que st.map requiere un DataFrame con columnas nombradas "lat" y "lon" o "latitude" y "longitude".

Si encuentras este problema, verifica tu DataFrame para asegurarte de que tenga las columnas correctas y que estén nombradas adecuadamente.

Creando mapas interactivos en Streamlit

Los mapas interactivos son una herramienta poderosa para la visualización de datos. Permiten a los usuarios hacer zoom, desplazarse por diferentes regiones e incluso hacer clic en puntos de datos para obtener más información. La función st.map de Streamlit hace que sea fácil crear estos mapas interactivos.

Formas sencillas de incluir mapas interactivos

Incluir un mapa interactivo en tu aplicación de Streamlit es tan sencillo como pasar un DataFrame con valores de latitud y longitud a la función st.map. Sin embargo, también puedes mejorar tus mapas añadiendo interactividad, como marcadores personalizados, información emergente y más.

Por ejemplo, puedes añadir una función emergente que muestre más información sobre un punto de datos cuando se hace clic en él. Esto se puede hacer añadiendo una columna adicional a tu DataFrame con la información que deseas mostrar.

# Añadir una columna adicional para la información emergente
datos['info'] = ['San Francisco', 'Los Angeles', 'Nueva York']
 
# Crear un mapa con los datos
st.map(datos)

En este ejemplo, cuando se hace clic en un punto de datos, se mostrará el nombre de la ciudad.

Mostrar mapas con Streamlit y Folium

Si bien st.map es una herramienta poderosa para crear mapas, también puedes usar otras bibliotecas como Folium para crear mapas más complejos. Folium es una biblioteca de Python que te permite crear mapas interactivos utilizando Leaflet.js, una popular biblioteca de JavaScript de código abierto para mapas interactivos compatibles con dispositivos móviles.

Para mostrar un mapa de Folium en Streamlit, puedes usar la función st.pydeck_chart. Aquí tienes un ejemplo:

import folium
 
# Crear un mapa de Folium
m = folium.Map(location=[37.7749, -122.4194], zoom_start=10)
 
# Mostrar el mapa en Streamlit
st.pydeck_chart(m)

En este ejemplo, estamos creando un mapa de Folium centrado en las coordenadas [37.7749, -122.4194] con un nivel de zoom de 10. Luego mostramos este mapa en Streamlit utilizando la función st.pydeck_chart.

Esto es solo la punta del iceberg cuando se trata de crear mapas interactivos en Streamlit. Con el poder de Python y bibliotecas como Streamlit y Folium, las posibilidades son infinitas. Ya seas un científico de datos que desea visualizar tus datos o un desarrollador que crea una aplicación web basada en datos, los mapas interactivos son una herramienta poderosa que debes tener en tu arsenal.

Mejora la visualización de tus datos con Streamlit

La función st.map de Streamlit es una herramienta poderosa para la visualización de datos. Al permitirte crear mapas interactivos, proporciona una representación visual de tus datos que puede entenderse e interpretarse fácilmente. Esta sección profundizará en algunas características avanzadas de st.map y cómo puedes utilizarlas para mejorar tu visualización de datos.

Características avanzadas de st.map

Una de las características clave de st.map es su capacidad para manejar conjuntos de datos grandes. Puede representar eficientemente miles de puntos de datos en un mapa sin ralentizar tu aplicación. Esto lo convierte en una herramienta ideal para visualizar conjuntos de datos grandes.

Otra característica avanzada de st.map es su compatibilidad con otras bibliotecas de Python. Puedes usar bibliotecas como pandas para la manipulación de datos, numpy para cálculos numéricos y matplotlib para opciones de visualización adicionales. Esta interoperabilidad hace que st.map sea una herramienta versátil para la visualización de datos.

Ejemplos de visualización de datos con st.map

Para ilustrar el poder de st.map, veamos algunos ejemplos de visualización de datos. Supongamos que tenemos un conjunto de datos de listados de Airbnb en la ciudad de Nueva York. Podemos usar st.map para trazar estos listados en un mapa y obtener información sobre la distribución de los listados de Airbnb en la ciudad.

# Cargar el conjunto de datos
datos = pd.read_csv('nyc_airbnb_listings.csv')
 
# Crear un mapa con los datos
st.map(datos)

En este ejemplo, cada punto de datos en el mapa representa un listado de Airbnb. Al visualizar estos datos en un mapa, podemos ver fácilmente qué áreas de la ciudad de Nueva York tienen más listados de Airbnb.

Crea fácilmente visualizaciones de datos interactivas en Streamlit con PyGWalker

PyGWalker (opens in a new tab) es otra excelente herramienta que funciona maravillosamente como alternativa a Streamlit AgGrid.

PyGWalker + Demo en línea de Streamlit (opens in a new tab)

PyGWalker (opens in a new tab) es una biblioteca de Python que te ayuda a incrustar fácilmente una interfaz similar a Tableau en tu propia aplicación de Streamlit sin esfuerzo.

¡Consulta este increíble video producido por Cómo explorar datos con PyGWalker en Python (opens in a new tab) que muestra los pasos detallados para potenciar tu aplicación de Streamlit con esta potente biblioteca de visualización de datos en Python!


Agradecimientos especiales a Sven y su gran contribución (opens in a new tab) a la comunidad de PyGWalker.

Además, también puedes consultar estos recursos:

Visualiza datos en Streamlit con PyGWalker (opens in a new tab)

Conclusión

La función st.map de Streamlit es una herramienta poderosa para crear mapas interactivos y visualizar datos geoespaciales. Ya seas un científico de datos que desea visualizar tus datos o un desarrollador que crea una aplicación web basada en datos, st.map ofrece una forma simple y eficiente de crear mapas interactivos. Con sus características avanzadas y compatibilidad con otras bibliotecas de Python, st.map es una herramienta versátil que puede mejorar tu visualización de datos y análisis.

Preguntas frecuentes

¿Cómo hacer un mapa en Streamlit?

Crear un mapa en Streamlit es sencillo. Necesitas tener un DataFrame de pandas que contenga valores de latitud y longitud. Luego puedes pasar este DataFrame a la función st.map para crear un mapa.

¿Cómo creo un mapa interactivo de ubicación?

Puedes crear un mapa interactivo de ubicación en Streamlit utilizando la función st.map. Esta función crea un mapa y muestra puntos de datos en él. El mapa es interactivo, lo que significa que puedes hacer zoom y panoramizar en diferentes regiones. También puedes añadir marcadores personalizados e información emergente para mejorar la interactividad del mapa.

¿Streamlit tiene una API?

Sí, Streamlit tiene una API simple e intuitiva que te permite crear aplicaciones web interactivas. La API proporciona una variedad de funciones para crear diferentes tipos de visualizaciones, incluyendo mapas, gráficos y tablas. También puedes usar la API para añadir interactividad a tu aplicación, como botones, deslizadores y campos de entrada de texto.