Skip to content

Legend combining fill.name and group.name when ggplot keeps fill.name only #168

@mkcor

Description

@mkcor

@jcp1016 reported a very interesting issue which occurs when converting this awesome map:
nyc_collisions

The ggplot code being

ggplot(map_df) + 
        aes(long, lat, fill=CollisionRange, group=group) + 
        geom_polygon() + 
        geom_path(color="white", linetype=1, size=0.25) + 
        ggtitle("Collisions Reported in New York City - 2014") + 
        xlab(NULL) + ylab(NULL) + coord_equal() + 
        scale_fill_brewer() + 
        theme(axis.ticks = element_blank(), 
              axis.text.x = element_blank(), 
              axis.text.y = element_blank(), 
              legend.title=element_blank())

The entire project can be found at https://github.com/jcp1016/Collisions (code lives in "Main.Rmd").

She cites https://github.com/hadley/ggplot2/wiki/plotting-polygon-shapefiles for the choice of aesthetics and using geom_polygon.

As is, the ggplotly conversion (https://plot.ly/~marianne2/824/collisions-reported-in-new-york-city-2014/) looks good for the plot itself, but the legend is wrong: it's a cross product of fill.name and group.name, where the ggplot only represents fill.name in the legend...

@chriddyp @tdhock @cpsievert I would love your ideas on how to approach this. I definitely don't want to hack something that would make the legend work just in this case. I think it makes sense to include group.name in the legend in general. Would we want to give up on 'recreating' legends logically and, instead, retrieve the ggplot legends and translate them 'directly'?

For your information, showing below the resulting ggplot without group aesthetic argument:
missing_group

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions