es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo tener líneas de polígonos con colores basados en folium (python)

Tengo un conjunto de datos que está compuesto por las siguientes columnas: latitud, longitud, valor.

Deseo dibujar una polilínea en folium, con estos tres colores, basado en el valor:

  • 75 < valor < 85 : amarillo
  • 85 < valor < 95 : naranja
  • valor > 95 : rojo

Dado que un “valor” está asociado a cada fila que contiene una latitud y una longitud, quiero calcular el promedio del “valor” para cada par de coordenadas (es decir, un valor promedio cada dos filas), de modo que el color se basará en ese valor promedio.

¿Cómo puedo hacerlo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr esto, puedes comenzar importando las bibliotecas necesarias: pandas, folium, numpy.

    import pandas as pd
    import numpy as np
    import folium
    

    A continuación, puedes leer tu conjunto de datos como un dataframe de pandas y luego calcular la media de la columna de valores para cada par de coordenadas.

    df = pd.read_csv('tu_conjunto_de_datos.csv')
    df_agrupado = df.groupby(['latitud', 'longitud']).mean().reset_index()
    

    Luego puedes definir una función para colorear las polilíneas en base al valor promedio, utilizando declaraciones condicionales.

    def color_por_valor(valor):
        if 75 < valor < 85:
            return 'amarillo'
        elif 85 < valor < 95:
            return 'naranja'
        else:
            return 'rojo'
    

    Finalmente, puedes iterar sobre las filas del dataframe agrupado y agregar una polilínea al mapa de folium para cada par de coordenadas promedio, con el color determinado por el valor promedio.

    m = folium.Map(location=[df['latitud'].mean(), df['longitud'].mean()], zoom_start=10)
    
    for index, row in df_agrupado.iterrows():
        coords = [(row['latitud'], row['longitud']), (row['latitud_1'], row['longitud_1'])]
        valor_promedio = row['valor']
        color = color_por_valor(valor_promedio)
        folium.PolyLine(coords, color=color).add_to(m)
    
    m.save('tu_mapa.html')
    

    Esto te dará un mapa de folium con polilíneas coloreadas según el valor promedio de las coordenadas.

Comments are closed.