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 puedo obtener una leyenda cuando especifico un color definido por el usuario para trazar mapas utilizando geopandas?

He creado el mapa del mundo a partir de conjuntos de datos inherentes de geopandas de la siguiente manera:

world = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))

He trazado el mapa del mundo resaltando los continentes únicos usando:

world.plot("continent", legend = True)

Las leyendas también están presentes en el gráfico. Se ve de la siguiente manera:
Imagen de ejemplo

Automáticamente obtengo un color único para cada continente. Sin embargo, me gustaría definir el color para cada continente yo mismo y tenerlo en las leyendas. Para definir un color único para cada continente, he creado un diccionario color_dict que se ve así:

{'Oceania': 'yellow',
 'Africa': 'brown',
 'North America': 'maroon',
 'Asia': 'blue',
 'South America': 'green',
 'Europe': 'red',
 'Seven seas (open ocean)': 'skyblue',
 'Antarctica': 'white'}

Luego lo agregué como una nueva columna al dataframe geopandas world y creé el gráfico nuevamente.

world["Colors"] = world["continent"].map(color_dict)
world.plot("continent",
           color = world["Colors"],
           legend = True)

Imagen de ejemplo

Ahora obtengo el color deseado para cada continente. Sin embargo, ahora no obtengo el nombre y el color de los continentes en la leyenda. ¿Cómo puedo incluir las leyendas en el gráfico cuando defino el color yo mismo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para llevar las leyendas en el gráfico al definir el color usted mismo, puede usar el parámetro legend_kwds en la función world.plot(). Aquí tienes un ejemplo:

    import matplotlib.pyplot as plt
    
    # Crear diccionario de colores
    color_dict = {'Oceanía': 'amarillo',
                  'África': 'marrón',
                  'América del Norte': 'granate',
                  'Asia': 'azul',
                  'América del Sur': 'verde',
                  'Europa': 'rojo',
                  'Siete mares (océano abierto)': 'celeste',
                  'Antártida': 'blanco'}
    
    # Leer los datos del mundo
    world = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
    
    # Mapear colores
    world["Colores"] = world["continent"].map(color_dict)
    
    # Graficar
    fig, ax = plt.subplots()
    world.plot(column="continent", ax=ax, color=world["Colores"],
               legend=True, legend_kwds={'loc': "lower left"})
    ax.set_axis_off()
    plt.show()
    

    En este ejemplo, pasamos un diccionario de argumentos de palabras clave a legend_kwds que especifica la ubicación de la leyenda utilizando la palabra clave loc. Puede ajustar la ubicación de la leyenda cambiando el valor de la palabra clave loc.

Comments are closed.