web-dev-qa-db-fra.com

Comment ajouter une légende à hline?

Je voudrais ajouter une légende au tracé hline.

La tête de mon sous-ensemble ressemble à ceci

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

Mon code est le suivant:

require(ggplot2)
require(reshape2)
require(magrittr)
require(dplyr)
require(tidyr)
setwd("~/Documents/Results")
mydata <- read.csv("Metals sheet Rwosnb5.csv")
mydata <- read.csv("Metals sheet Rwosnb5.csv")
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)

Pour une raison quelconque, la légende ne fonctionne pas - la légende a les six sites avec une ligne à travers eux. J'aimerais idéalement une légende avec title = limit et Label 1 (10) = NRW limit et label 2 (75.5) = Geochemical atlas limit.

16
LucySHE

Vous pouvez utiliser l'esthétique linetype pour créer une légende distincte pour les lignes horizontales plutôt que de les ajouter à la légende existante.

Pour ce faire, nous pouvons déplacer linetype à l'intérieur aes tout en mappant toujours sur une constante. J'ai utilisé vos étiquettes souhaitées comme constante. Le nom de la légende et le type de ligne utilisés peuvent être définis dans scale_linetype_manual. Je supprime show.legend = TRUE pour garder les lignes hors de l'autre légende. Les couleurs de légende sont fixées dans override.aes.

I + geom_hline(aes(yintercept= 10, linetype = "NRW limit"), colour= 'red') +
    geom_hline(aes(yintercept= 75.5, linetype = "Geochemical atlas limit"), colour= 'blue') +
    scale_linetype_manual(name = "limit", values = c(2, 2), 
                      guide = guide_legend(override.aes = list(color = c("blue", "red"))))

enter image description here

31
aosmith