ggplot2 draws two legends

14,713

You have three aesthetics that are mapped to Variable: shape, colour, and linetype. Legends are collapsed together when they have the same title and labels. You have set the title to blank for colour and given it custom labels ("Significant Z-Score" and "Moran's I Z-Score"). You need to do that for linetype and shape as well to get them to collapse all together.

Change

scale_linetype_manual(values=c(1,3)) +

to

scale_linetype_manual(values=c(1,3), name="", labels=c("Signficant Z-Score",   "Moran's I Z-Score")) +

and add

scale_shape_discrete(name="", label=c("Signficant Z-Score", "Moran's I Z-Score")) +

(You can also get rid of the scale_fill_discrete because you don't actually use the fill aesthetic anywhere.)

This gives enter image description here

Share:
14,713
user1738753
Author by

user1738753

Updated on June 09, 2022

Comments

  • user1738753
    user1738753 almost 2 years

    I have almost complete the following graph, but there is one problem with it.

    The legend in the graph is drawn twice.

    Here is the data:

    structure(list(Period = c("January 1997 - August 2003", "September 2003 - Jun 2005", 
    "Jul 2005 - Dec 2009", "January 1997 - August 2003", "September 2003 - Jun 2005", 
    "Jul 2005 - Dec 2009"), Time.Period = structure(c(1L, 3L, 2L, 
     1L, 3L, 2L), .Label = c("Jan 1997 - Aug 2003", "Jul 2005 - Dec 2009", 
     "Sep 2003 - Jun 2005"), class = "factor"), Variable = structure(c(2L, 
     2L, 2L, 1L, 1L, 1L), .Label = c("Significant", "Zscore"), class = "factor"), 
     Score = c(8.798129, 4.267268, 7.280275, 1.64, 1.64, 1.64)), .Names = c("Period", 
     "Time.Period", "Variable", "Score"), class = "data.frame", row.names = c(NA, 
     -6L))
    
    ggplot(glomor, aes(x=Time.Period, y=Score, group=Variable, shape=Variable, color=Variable)) +
     geom_point() +
     guides(fill=FALSE) +
     scale_x_discrete(limits=c("Jan 1997 - Aug 2003","Sep 2003 - Jun 2005","Jul 2005 - Dec 2009"),    expand=c(.08,0)) +
      geom_line(aes(linetype=Variable), size=1.5) +
      geom_point(size=4.2) +
      scale_linetype_manual(values=c(1,3)) +
      scale_color_manual(values=c("black", "grey40"), name="", labels=c("Signficant Z-Score",   "Moran's I Z-Score")) +
      scale_fill_discrete(name="", label=c("Signficant Z-Score", "Moran's I Z-Score")) +
      theme_classic()+
      ylim(0,10) +
      xlab("Time Periods") +
      ylab("Moran's I Z-Score") +
      theme(axis.title.x=element_text(size=14)) +
      theme(axis.title.y=element_text(size=14)) +
      theme(legend.position=c(.75, .85)) +
      theme(legend.background = element_rect(fill="white")) +
      theme(legend.key = element_blank())
    

    Does anyone know, why the ggplot2 produces two legends?