[Python] Plotnine printing point geometry legend as polygon

Discussão em 'Python' iniciado por Stack, Janeiro 25, 2025.

  1. Stack

    Stack Membro Participativo

    In my map I have multiple layers. One being points and others being polygons. I want show proper legend (points to show points, polygons to show polygons), whatever way I try I cannot get it to wok.

    # Precipitation map
    precip_station_map = (
    ggplot(precip_stations_clipped)
    + geom_map(
    mapping=aes(geometry='geometry'),
    color = 'red'
    )
    + geom_map(
    data=upper_hudson_basin_10km_buffer,
    mapping=aes(geometry='geometry', color='"10km buffer"'),
    inherit_aes=False,
    fill=None
    )
    + geom_map(
    data=upper_hudson_basin_30km_buffer,
    mapping=aes(geometry='geometry', color='"30km buffer"'),
    inherit_aes=False,
    fill=None
    )
    + geom_map(
    data=upper_hudson_basin.to_crs(precip_stations_clipped.crs),
    mapping=aes(geometry='geometry', color='"Upper Hudson Basin"'),
    inherit_aes=False,
    fill=None
    )
    + labs(title='Precipitation Map')
    + scale_color_manual(
    name='Buffer Distance:',
    values={
    '10km buffer': 'royalblue',
    '30km buffer': 'orange',
    'Upper Hudson Basin': 'black'
    }
    )
    + theme_minimal()
    + theme(
    legend_title=element_text(size=10),
    legend_text=element_text(size=8),
    legend_position='bottom'
    )
    )
    precip_station_map.draw()


    [​IMG]

    I tried the following, but it is still not working. In the figure below, I want the precipitation station to appear in the legend as a dot, not a polygon.

    geom_merged = pd.concat(
    [
    #precip_stations_clipped[['geometry']].assign(LAYER='Preciptation Station'),
    upper_hudson_basin.to_crs(precip_stations_clipped.crs)[['geometry']].assign(LAYER='Upper Hudson'),
    upper_hudson_basin_10km_buffer[['geometry']].assign(LAYER='10km buffer'),
    upper_hudson_basin_30km_buffer[['geometry']].assign(LAYER='30km buffer')
    ]
    )

    precip_station_map2 = (
    ggplot(geom_merged)
    + geom_map(
    mapping=aes(geometry='geometry', color = 'LAYER'),
    fill = None
    )
    + geom_map(
    data = precip_stations_clipped[['geometry']].assign(LAYER='Preciptation Station'),
    mapping=aes(gemetry='geometry', color='LAYER')
    )

    )


    [​IMG]

    Continue reading...

Compartilhe esta Página