• 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
    • Encuestas: Tamaño de Muestra
    • Lotería: Probabilidad de Ganar
    • Reparto de Escaños (D’Hondt)
    • Tres en Raya con IA
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

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

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.

Publicidad


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.

Cómo extender el tamaño de un disco en Rocky Linux 9 usando growpart y LVM
En Analytics Lane
Cómo extender el tamaño de un disco en Rocky Linux 9 usando growpart y LVM

Configuración del entorno

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

Publicidad


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.

Publicidad


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.

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.

Publicidad


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.

Publicidad


Paso 3: Visualizar el mapa actualizado

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


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.


Publicidad


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?

Publicidad


Publicaciones relacionadas

  • Cómo extender el tamaño de un disco en Rocky Linux 9 usando growpart y LVM
  • Curiosidad: El origen del análisis exploratorio de datos y el papel de John Tukey
  • Cómo calcular el tamaño de la muestra para encuestas
  • Curiosidad: La Ley de Twyman y la trampa de los datos “interesantes”
  • Copias de seguridad automáticas en SQL Server con rotación de archivos
  • Curiosidad: La Paradoja de Simpson, o por qué no siempre debes fiarte de los promedios
  • Error npm ERR! code EACCES al instalar paquetes en Node.js: Cómo solucionarlo paso a paso
  • Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo
  • ¿Está concentrado el MSCI World? Un análisis con Gini, Lorenz y leyes de potencia

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

¿Está concentrado el MSCI World? Un análisis con Gini, Lorenz y leyes de potencia

septiembre 30, 2025 Por Daniel Rodríguez

Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo

septiembre 25, 2025 Por Daniel Rodríguez

Error npm ERR! code EACCES al instalar paquetes en Node.js: Cómo solucionarlo paso a paso

septiembre 23, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Media, mediana y moda: Descubre cómo interpretar las medidas de tendencia central con ejemplos claros y sin complicaciones publicado el mayo 16, 2025 | en Ciencia de datos
  • Gráficos de barras en Matplotlib publicado el julio 5, 2022 | en Python
  • Cómo usar Ollama con Node.js y TypeScript para ejecutar modelos LLM locales publicado el febrero 19, 2025 | en JavaScript
  • Cómo calcular el tamaño de la muestra para encuestas publicado el septiembre 9, 2025 | en Ciencia de datos
  • Error: No se puede cargar el archivo porque la ejecución de scripts está deshabilitada en este sistema Solución a los problemas de ejecución de scripts en Windows 11 cuando se da el mensaje: “No se puede cargar el archivo porque la ejecución de scripts está deshabilitada en este sistema” publicado el febrero 14, 2024 | 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.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • 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
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes

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-2025 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto