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.

Folium plot GeoJson rellena el color de polígonos en función de valores personalizados.

Tengo polígonos con valores de latitud/longitud asociados a identificadores en un GeoDataFrame como se muestra a continuación. Considere un ejemplo con dos identificadores A y B, el polígono A tiene tres puntos y B tiene cuatro puntos, sus valores de latitud/longitud se muestran a continuación. Correspondiente a cada punto (latitud/longitud), también tengo un valor numérico asociado como se muestra en la última columna.

id geometry values
A POLYGON((lat_A_1 long_A_1, lat_A_2 long_A_2, lat_A_3 long_A_3)) 10,12,13
B POLYGON((lat_B_1 long_B_1, lat_B_2 long_B_2, lat_B_3 long_B_3, lat_B_4 long_B_4)) 4,8,16,20

Itero sobre el GeoDataFrame y trazo estos polígonos en el mapa usando este código:

geo_j = folium.GeoJson(data=geo_j,
                       style_function={ 
                           'fillColor': 'blue'
                       })

¿Existe alguna forma de llenar el polígono con un mapa de colores personalizado basado en los valores de la columna en el GeoDataFrame, como rojo para 0-5, azul para 6-10 y verde para 11-20? ¿Cómo se puede hacer esto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible llenar el polígono con un mapa de colores personalizado basado en la columna values en el GeoDataFrame. Puede utilizar el argumento style_function del método folium.GeoJson para definir una función personalizada que tome la característica como un argumento y devuelva un diccionario de parámetros de estilo. La función personalizada debe utilizar la columna values para determinar el color del polígono. Por ejemplo:

        def style_function(feature):
            if feature['values'] <= 5:
                return {'fillColor': 'red'}
            elif feature['values'] <= 10:
                return {'fillColor': 'blue'}
            else:
                return {'fillColor': 'green'}
    
        geo_j = folium.GeoJson(data=geo_j,
                               style_function=style_function)
    

Comments are closed.