• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Simulador FIRE (Financial Independence, Retire Early)
    • Herramientas
      • Formateador / Minificador de JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Tutorial: Creando un mapa interactivo con Folium en Python

diciembre 13, 2024 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 7 minutos

Aplicación web interactiva que muestra un mapa de Madrid con puntos de interés destacados, creado utilizando la biblioteca Folium.

En este tutorial, se mostrará cómo crear un mapa interactivo utilizando Folium, una poderosa biblioteca de Python para visualización geoespacial. Además, se integrará este mapa en una aplicación web sencilla utilizando Flask, permitiendo que esté disponible en localhost:3000. A lo largo del tutorial, también se verá cómo obtener y mostrar puntos de interés dinámicamente en el mapa.

Al finalizar el tutorial se tendrá una aplicación funcional que combina la potencia de Folium y Flask, ideal para usar en proyectos de análisis de datos, presentaciones o dashboards interactivos.

Tabla de contenidos

  • 1 Introducción a Folium
    • 1.1 Características principales de Folium
  • 2 Configuración del entorno
    • 2.1 Instalación de Python
    • 2.2 Creación de un entorno virtual
    • 2.3 Instalación de las dependencias
  • 3 Creando un mapa interactivo con Folium
    • 3.1 Paso 1: Crear el mapa básico
      • 3.1.1 Explicación del código:
    • 3.2 Paso 2: Ejecutar el script
    • 3.3 Paso 3: Visualizar el mapa
  • 4 Añadiendo puntos de interés
    • 4.1 Paso 1: Modificación del código
      • 4.1.1 Explicación del código:
    • 4.2 Paso 2: Ejecutar el script de nuevo
    • 4.3 Paso 3: Visualizar el mapa actualizado
    • 4.4 Paso 4: Personalización de los marcadores
      • 4.4.1 Opciones de personalización:
  • 5 Integrando Folium con Flask
    • 5.1 Paso 1: Crear la aplicación Flask
      • 5.1.1 Explicación del código:
    • 5.2 Paso 2: Ejecutar la aplicación Flask
  • 6 Conclusiones

Introducción a Folium

Folium es una biblioteca de Python diseñada para facilitar la creación de mapas interactivos. Se basa en la popular biblioteca de JavaScript Leaflet.js, conocida por su flexibilidad y capacidades avanzadas para trabajar con mapas web. Con Folium, se pueden crear mapas directamente desde Python y exportarlos a archivos HTML para visualizarlos en un navegador.

Características principales de Folium

  • Visualización de datos geoespaciales: Representa datos como puntos, líneas o polígonos sobre un mapa.
  • Compatibilidad con datos geográficos: Permite integrar datos de formatos como GeoJSON o shapefiles.
  • Interactividad: Agrega marcadores, ventanas emergentes, capas personalizadas y controles.
  • Personalización: Ofrece una amplia gama de estilos de mapas, desde simples hasta detallados.

Folium es ampliamente utilizado en proyectos de ciencia de datos, sistemas de información geográfica (GIS) y desarrollo web debido a su facilidad de uso y su capacidad de integración con otras bibliotecas de Python.

Nuevo simulador FIRE en el laboratorio de aplicaciones de Analytics Lane
En Analytics Lane
Nuevo simulador FIRE en el laboratorio de aplicaciones de Analytics Lane

Publicidad


Configuración del entorno

Antes de poder crear un mapa interactivo con Folium es necesario tener instalado Python, la biblioteca y otras dependencias.

Instalación de Python

Folium es una biblioteca de Python, por lo que es imprescindible tener Python instalado en el sistema. Se puede descargar la última versión desde python.org.

Creación de un entorno virtual

Es recomendable trabajar en un entorno virtual para gestionar dependencias. Se puede crear uno nuevo para este proyecto usando venv:

python -m venv folium_env

Una vez creado el entorno virtual, se puede activar. Para hacerlo en Windows se debe ejecutar el siguiente comando:

folium_env\Scripts\activate

Por otro lado, en el caso de macOS o Linux es necesario ejecutar el comando:

source folium_env/bin/activate

Publicidad


Instalación de las dependencias

Una vez en el entorno, se puede instar Folium y Flask ejecutando:

pip install folium Flask

Creando un mapa interactivo con Folium

El primer paso para trabajar con Folium es crear un mapa básico. En el siguiente ejemplo, se generará un mapa centrado en Madrid, al cual luego se le podrán añadir elementos interactivos como marcadores y capas personalizadas.

Paso 1: Crear el mapa básico

Para empezar, se puede crear un script en Python que genera un mapa interactivo utilizando para ello la biblioteca Folium. Esto es lo que se muestre en el siguiente código, el cual se puede copiar en un archivo llamado mapa.py:

import folium

# Crear un mapa centrado en Madrid
mapa_madrid = folium.Map(location=[40.4168, -3.7038], zoom_start=13)

# Guardar el mapa en un archivo HTML
mapa_madrid.save("mapa_madrid.html")

print("Mapa generado: abre 'mapa_madrid.html' en tu navegador.")

Explicación del código:

  • folium.Map: Es la clase que se utiliza para crear un mapa interactivo. El parámetro location define las coordenadas centrales del mapa (en este caso, Madrid) y zoom_start establece el nivel de acercamiento inicial.
  • save(): Este método guarda el mapa generado en un archivo HTML que puede abrirse en cualquier navegador.

Publicidad


Paso 2: Ejecutar el script

Para generar el mapa, solemnes debe ejecutar el archivo anterior. Para ellos se puede abrir una terminal o consola y ejecuta el script con el siguiente comando:

python mapa.py

Esto creará un archivo llamado mapa_madrid.html en el mismo directorio donde guardaste el script.

Paso 3: Visualizar el mapa

Ahora se puede abrir el archivo mapa_madrid.html en cualquier navegador. Al hacer esto se debería ver un mapa interactivo centrado en Madrid que se puede acercar, alejar y mover. Como el que se muestra a continuación.


Añadiendo puntos de interés

Un mapa interactivo es más útil cuando incluye información relevante, como puntos de interés. En esta sección, se mostrará cómo añadir marcadores al mapa para destacar lugares importantes de Madrid.

Publicidad


Paso 1: Modificación del código

Para agregar los puntos es necesario actualizar el archivo mapa.py para incluir marcadores en el mapa:

import folium

# Crear un mapa centrado en Madrid
mapa_madrid = folium.Map(location=[40.4168, -3.7038], zoom_start=16)

# Lista de puntos de interés
puntos_interes = [
    {"nombre": "Puerta del Sol", "coordenadas": [40.416775, -3.703790]},
    {"nombre": "Plaza Mayor", "coordenadas": [40.415363, -3.707398]},
    {"nombre": "Museo del Prado", "coordenadas": [40.417080, -3.703612]}
]

# Añadir marcadores al mapa
for punto in puntos_interes:
    folium.Marker(
        location=punto["coordenadas"],
        popup=punto["nombre"],  # Información que aparece al hacer clic
        tooltip=f"Visita: {punto['nombre']}"  # Información al pasar el cursor
    ).add_to(mapa_madrid)

# Guardar el mapa en un archivo HTML
mapa_madrid.save("mapa_madrid_marcadores.html")

print("Mapa actualizado con puntos de interés. Abre 'mapa_madrid_marcadores.html' en tu navegador.")

Explicación del código:

  1. Lista de puntos de interés: Se define una lista con el nombre y las coordenadas de cada uno del lugar que se desea destacar.
  2. Marcadores:
    • folium.Marker: Agrega un marcador al mapa en la ubicación especificada.
    • popup: Muestra una ventana emergente con información cuando haces clic en el marcador.
    • tooltip: Muestra un texto emergente al pasar el cursor sobre el marcador.
  3. Bucle for: Recorremos la lista de puntos de interés y se agrega cada marcador al mapa con la información correspondiente.

Paso 2: Ejecutar el script de nuevo

Una vez aterrizado el script, se puede ejecutar de nuevo para tener el nuevo mapa con los puntos de interés. Estos se pueden hacer escribiendo el siguiente comando en la terminal o consola:

python mapa.py

Esto generará un nuevo archivo mapa_madrid.html que incluye los marcadores de los puntos de interés.

Paso 3: Visualizar el mapa actualizado

Si se abre el archivo, se puede ver el siguiente mapa.


Publicidad


Paso 4: Personalización de los marcadores

Es posible personalizar los marcadores con iconos y colores para destacar aún más los puntos de interés. Por ejemplo:

for punto in puntos_interes:
    folium.Marker(
        location=punto["coordenadas"],
        popup=punto["nombre"],
        tooltip=f"Visita: {punto['nombre']}",
        icon=folium.Icon(color="red", icon="info-sign")  # Cambiar el color e icono
    ).add_to(mapa_madrid)

Opciones de personalización:

  • Colores disponibles: 'red', 'blue', 'green', 'purple', 'orange', entre otros.
  • Iconos: Puedes usar cualquier icono disponible en FontAwesome o Leaflet.

Al modificar esta función, se genera un nuevo mapa, como el que se muestra a continuación.


Integrando Folium con Flask

Integrar Folium con Flask permite desplegar mapas interactivos en una aplicación web, lo que es ideal para proyectos más dinámicos y colaborativos. En esta sección, se creará una aplicación Flask que muestra un mapa con puntos de interés en Madrid directamente en el navegador.

Paso 1: Crear la aplicación Flask

Una versión básica de una aplicación Flash con Folium se muestra en el siguiente código, el cual se puede guardar en un archivo llamado app.py.

from flask import Flask, render_template_string
import folium

app = Flask(__name__)

# Función para crear el mapa con Folium
def crear_mapa():
    # Crear un mapa centrado en Madrid
    mapa = folium.Map(location=[40.4168, -3.7038], zoom_start=16)

    # Lista de puntos de interés
    puntos_interes = [
        {"nombre": "Puerta del Sol", "coordenadas": [40.416775, -3.703790]},
        {"nombre": "Plaza Mayor", "coordenadas": [40.415363, -3.707398]},
        {"nombre": "Museo del Prado", "coordenadas": [40.417080, -3.703612]}
    ]

    # Añadir marcadores al mapa
    for punto in puntos_interes:
        folium.Marker(
            location=punto["coordenadas"],
            popup=punto["nombre"],  # Ventana emergente al hacer clic
            tooltip=f"Visita: {punto['nombre']}"  # Texto emergente al pasar el cursor
        ).add_to(mapa)

    return mapa._repr_html_()  # Genera el HTML para incrustar el mapa

# Ruta principal de la aplicación
@app.route('/')
def index():
    mapa_html = crear_mapa()
    # Plantilla HTML básica para mostrar el mapa
    template = """
    <!DOCTYPE html>
    <html>
    <head>
        <title>Mapa de Puntos de Interés</title>
    </head>
    <body>
        <h1 style="text-align: center;">Mapa de Puntos de Interés en Madrid</h1>
        <div style="width: 80%; margin: auto; border: 2px solid #ccc; border-radius: 8px;">
            {{ mapa_html|safe }}
        </div>
    </body>
    </html>
    """
    return render_template_string(template, mapa_html=mapa_html)

if __name__ == '__main__':
    app.run(host='localhost', port=3000, debug=True)

Explicación del código:

  1. crear_mapa: Esta función genera un mapa con marcadores de los puntos de interés utilizando Folium.
    • mapa._repr_html_(): Convierte el mapa en código HTML para incrustarlo en la página web.
  2. render_template_string: Renderiza una plantilla HTML directamente desde una cadena de texto, lo que simplifica el proceso para tutoriales básicos.
  3. app.route('/'): Define la ruta principal (/) de la aplicación Flask, donde se mostrará el mapa.
  4. HTML embebido: Se utiliza para integrar el mapa generado por Folium y dar estilo básico a la página.

Publicidad


Paso 2: Ejecutar la aplicación Flask

La aplicación se puede indicar ejecutando el siguiente comando en la terminal:

python app.py

Una vez hecho esto, se puede abrir un navegador e ir a http://localhost:3000. Al hacer esto se debería ver un mapa interactivo con los puntos de interés destacados.

Aplicación web interactiva que muestra un mapa de Madrid con puntos de interés destacados, creado utilizando la biblioteca Folium.
Aplicación web creada en el navegador.

Conclusiones

En este tutorial se ha explicado cómo crear un mapa interactivo con Folium en Python e integrarlo en una aplicación web con Flask. Permitiendo mostrar información en mapas interactivos. A partir de estos conocimientos, se pueden desarrollar aplicaciones más complejas, visualizar diferentes tipos de datos geoespaciales y compartir los resultados en páginas web.

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 4 / 5. Votos emitidos: 1

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • Nuevo simulador FIRE en el laboratorio de aplicaciones de Analytics Lane
  • Nueva calculadora de préstamos e hipotecas en el laboratorio de aplicaciones de Analytics Lane
  • Hardening avanzado de NGINX: CSP, OCSP Stapling y defensa en profundidad
  • Nuevo generador y verificador de hashes en el laboratorio de aplicaciones de Analytics Lane
  • Nueva simulación de la estrategia Martingala en ruleta en el laboratorio de aplicaciones de Analytics Lane
  • Exactitud, precisión, recall… y los errores que cometemos al interpretarlas en proyectos reales
  • Nuevo simulador del problema de Monty Hall en el laboratorio de aplicaciones de Analytics Lane
  • Nuevo simulador interactivo de K-Means en el laboratorio de aplicaciones de Analytics Lane
  • Por qué los chatbots de inteligencia artificial parecen estar siempre de acuerdo contigo – Conversar con una inteligencia artificial – Parte I

Publicado en: Python Etiquetado como: Mapas

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Nueva herramienta: Comparador y Formateador de Texto y JSON en el laboratorio de Analytics Lane

abril 21, 2026 Por Daniel Rodríguez

Chatbots vs redes sociales: la diferencia clave entre la inteligencia artificial y los algoritmos de recomendación – Conversar con una inteligencia artificial – Parte II

abril 21, 2026 Por Daniel Rodríguez

Nueva Calculadora de Estadísticos Descriptivos en el laboratorio de aplicaciones de Analytics Lane

abril 20, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Gráficos de barras en Matplotlib publicado el julio 5, 2022 | en Python
  • Buscar en Excel con dos o más criterios publicado el septiembre 7, 2022 | en Herramientas
  • Excel en Python Guardar y leer archivos Excel en Python publicado el julio 30, 2018 | en Python
  • La similitud de Jaro–Winkler publicado el junio 24, 2020 | en Ciencia de datos, R
  • Copiar y pegar Activar copiar y pegar en VirtualBox publicado el mayo 1, 2019 | en Herramientas

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.9 (11)

Pandas: Cambiar los tipos de datos en los DataFrames

Comentarios recientes

  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto