LucySHE - 1 year ago 145
R Question

# How to add a legend to hline?

I'd like to add a legend to hline plot.

The head of my subset looks like this

``````Site       Date    Al
1   Bo6 2014-10-07 152.1
2   Bo1 2014-10-07 157.3
3   Bo3 2014-10-07 207.1
4   Bo4 2014-10-07 184.3
5   Bo5 2014-10-07  23.2
13  Bo6 2014-10-14  96.8
``````

My code is as follows:

``````require(ggplot2)
require(reshape2)
require(magrittr)
require(dplyr)
require(tidyr)
setwd("~/Documents/Results")
L <- subset(mydata, Site =="Bo1"| Site == "Bo2"| Site == "Bo3"| Site ==          "Bo4"| Site == "Bo5" | Site == "Bo6", select = c(Site,Date,Al))
L\$Date <- as.Date(L\$Date, "%d/%m/%Y")
I <- ggplot(data=L, aes(x=Date, y=Al, colour=Site)) +
geom_point() +
labs(title = "Total Al in the Barlwyd and Bowydd in Pant-yr-afon    sites B4-B9
2014-2015.", x = "Month 2014/2015",
y = "Total concentration (mg/L)") +
scale_y_continuous(limits = c(0, 500)) +
scale_x_date(date_breaks = "1 month", date_labels = "%m")
I + geom_hline(aes(yintercept= 10),  linetype = 2, colour= 'red',   show.legend =TRUE) +
geom_hline(aes(yintercept= 75.5), linetype = 2, colour= 'blue', show.legend = TRUE)
``````

For some reason the legend does not work -- the legend has the six sites with a line through them. I would ideally like a legend with title = limit
and Label 1 (10) = NRW limit and label 2 (75.5)= Geochemical atlas limit.

You can use the `linetype` aesthetic to make a separate legend for the horizontal lines rather than adding them to the existing legend.
To do this we can move `linetype` inside `aes` while still mapping to a constant. I used your desired labels as the constant. The legend name and the line type used can be set in `scale_linetype_manual`. I remove `show.legend = TRUE` to keep the lines out of the other legend. The legend colors are fixed in `override.aes`.
``````I + geom_hline(aes(yintercept= 10, linetype = "NRW limit"), colour= 'red') +