2016-08-24 3 views
4

Я хотел бы добавить легенду в hline plot.Как добавить легенду к hline?

Глава моего подмножества выглядит следующим образом

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 

Мой код выглядит следующим образом:

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) 

По некоторым причинам легенда не работает - легенда имеет шесть сайтов с помощью через них. Мне идеально понравилась бы легенда с названием = limit и меткой 1 (10) = предел NRW и метка 2 (75,5) = предел геохимического атласа.

+1

Пожалуйста, прочтите [как обеспечить минимальные воспроизводимые примеры в R] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible- пример # ответ-5963610). Затем отредактируйте и улучшите его соответствующим образом. Хорошая почта обычно обеспечивает минимальные входные данные, желаемые выходные данные и попытки кода - все операции копирования и вставки в новом/чистом сеансе R. Например. ваш пример не может быть запущен как никто, кроме того, что у вас есть файл CSV, 'library (ggplot2)' отсутствует и т. д. – lukeA

+0

Вы пытались 'show_guide' вместо' show.legend'? http://stackoverflow.com/questions/17092894/how-to-added-a-custom-legend-for-geom-hline & http://stackoverflow.com/questions/17092894/how-to-added-a- custom-legend-for-geom-hline – bVa

+0

Я только что попробовал, и я получаю сообщение об ошибке «' show_guide' устарел. Вместо этого используйте 'show.legend' вместо ' – LucySHE

ответ

12

Вы можете использовать эстетику, чтобы сделать отдельную легенду для горизонтальных линий, а не добавлять их в существующую легенду.

Для этого мы можем перемещать linetype внутри aes, сохраняя при этом постоянство. Я использовал ваши нужные ярлыки как константу. Имя легенды и используемый тип линии могут быть установлены в scale_linetype_manual. Я удаляю show.legend = TRUE, чтобы сохранить линии из другой легенды. Цвета легенды фиксируются в 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

+0

Спасибо, что удивительно! Что такое R whizzkid :-) – LucySHE

Смежные вопросы