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.

Crear un mapa de Folium con relleno de color discreto.

Me gustaría llenar un mapa de Folium con valores de color discretos. Pero cada forma se devuelve con el mismo valor (es decir, el mismo color)

Nombre  Color_de_relleno    Geometría
A       naranja             ....
B       amarillo            ....
C       morado              ....
D       rojo                ....
m = folium.Map(location=[40.6725, -73.985], zoom_start=14, tiles='CartoDB positron')
title_html = '''<h3 align="center" style="font-size:16px"><b>{}</b></h3>'''.format('Proyectos Gowanus')

for _, r in gzones.iterrows():
    sim_geo = gpd.GeoSeries(r['geometry'])
    geo_j = sim_geo.to_json()
    geo_j = folium.GeoJson(data=geo_j,
                           style_function=lambda x: {'fillColor': r['color_de_relleno']})
    folium.Tooltip(r['Nombre']).add_to(geo_j)
    geo_j.add_to(m)

m.get_root().html.add_child(folium.Element(title_html))
m
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para asegurarse de que cada forma en el mapa Folium esté rellenada con un valor discreto de color, deberá modificar la style_function para incluir un valor de color único para cada forma. Una forma de lograr esto es mediante la creación de un diccionario que mapee cada nombre en la columna Name con su color correspondiente en la columna Fill_Color, y luego usando ese diccionario en la style_function.

    Aquí hay un ejemplo de cómo puede modificar el código para lograr esto:

    name_to_color = dict(zip(gzones['Name'], gzones['Fill_Color']))
    
    for _, r in gzones.iterrows():
        sim_geo = gpd.GeoSeries(r['geometry'])
        geo_json = sim_geo.to_json()
        geo_json = folium.GeoJson(
            data=geo_json,
            style_function=lambda x: {'fillColor': name_to_color[r['Name']]}
        )
        folium.Tooltip(r['Name']).add_to(geo_json)
        geo_json.add_to(m)
    

    Este código crea un diccionario name_to_color que mapea cada nombre en la columna Name con su color correspondiente en la columna Fill_Color. Luego, en la style_function, buscamos el color para la forma actual usando name_to_color[r['Name']].

    Esto debería asegurar que cada forma en el mapa Folium esté rellenada con un valor discreto de color basado en su nombre correspondiente y color en el conjunto de datos.

Comments are closed.