user5154533
user5154533

Reputation:

Legend won't show

I can't seem to get a legend for my two geom_lines to show. I've tried a number of different solutions from previously asked questions, but nothing seems to be working. Some of those attempts are in the code below.

nauyear <- c(2000, 2010, 2020, 2030, 2050)
naupop  <- c(14495, 17529, 25000, 25000, 25000)
naupopvsfs <- c(27400, 26000, 32300, 28700, 23600) 
naupopvsfslabels <- c("27.4%", "26%", "32.3%", "28.7%", "23.6%")
NAUPop <- data.frame(nauyear, naupop, naupopvsfs, naupopvsfslabels)

NAUP <- ggplot(NAUPop, aes(x=nauyear, y=naupop))
NAUP <- NAUP + ggtitle("NAU Population Projection")
NAUP <- NAUP + xlab("Year")
NAUP <- NAUP + ylab("Population")
NAUP <- NAUP + geom_line(data = NAUPop, aes(x = nauyear, y = naupop), colour="blue", show_guide = TRUE)
NAUP <- NAUP + geom_line(data = NAUPop, aes(x = nauyear, y = naupopvsfs), colour="red", linetype="dashed", show_guide = TRUE)
NAUP <- NAUP + scale_linetype_manual("Legend", values = c(naupop, naupopvsfs),
                                 labels = c("NAU pop", "b"))
NAUP <- NAUP + geom_point(size=4)
NAUP <- NAUP + geom_point(data = NAUPop, aes(x = nauyear, y = naupopvsfs), size=3)
NAUP <- NAUP + geom_text(label=naupop, fontface="bold", size=4, hjust=.5, vjust=2)
NAUP <- NAUP + geom_text(data = NAUPop, aes(x = nauyear, y = naupopvsfs), 
                        label=naupopvsfslabels, fontface="bold", size=3, hjust=.5, vjust=3)
NAUP <- NAUP + ylim(14000, 33000)
NAUP <- NAUP + xlim(2000,2050)
NAUP <- NAUP + scale_x_continuous(breaks=c(2000,2010,2020,2030,2050))
NAUP <- NAUP + theme_update()
NAUP <- NAUP + theme(plot.title = element_text(lineheight=.8, face="bold"))
NAUP <- NAUP + theme(axis.title.x = element_text(face="bold"), 
                     axis.title.y = element_text(face="bold"),
                     legend.position = c(0.9, 0.2))
plot(NAUP)

Upvotes: 2

Views: 377

Answers (1)

baptiste
baptiste

Reputation: 77096

Here's one approach,

nauyear <- c(2000, 2010, 2020, 2030, 2050)
naupop  <- c(14495, 17529, 25000, 25000, 25000)
naupopvsfs <- c(27400, 26000, 32300, 28700, 23600) 
naupopvsfslabels <- c("27.4%", "26%", "32.3%", "28.7%", "23.6%")
NAUPop <- data.frame(year = nauyear, population = naupop, 
                     vsfs = naupopvsfs, labels = naupopvsfslabels)

library(reshape2)
m <- melt(NAUPop, id = c("year", "labels"))

ggplot(m, aes(year, value, group=variable)) +
  geom_line(aes(linetype=variable, colour=variable)) +
  geom_point(aes(size=variable)) +
  geom_text(aes(label=labels), data=subset(m, variable == "vsfs")) +
  geom_text(aes(label=value), data=subset(m, variable == "population")) +
  scale_size_manual(values = c(1,2)) +
  scale_colour_manual(values = c("red", "blue")) +
  scale_linetype_manual(values = c("dashed", "solid")) 

Upvotes: 3

Related Questions