2015-12-02 3 views
1

Пример кода:Удалить одну метку из ggplot легенды

library(ggplot2) 
library(RcppRoll) 
library(reshape2) 
test_data2=data.frame(dates2015 <- seq(as.Date("2014-01-01"), as.Date("2014-12-31"), by="days"), runif(365,0,1), runif(365,1,2)) 
colnames(test_data2)=c("Date", "var1", "var2") 

var1roll=roll_mean(test_data2$var1, 21) 
var2roll=roll_mean(test_data2$var2, 21) 
var1roll=c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,var1roll,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA) 
var2roll=c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,var2roll,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA) 

test_data3=data.frame(test_data2, var1roll, var2roll) 

test_data_long3 <- melt(test_data3, id="Date") 
colnames(test_data_long3)=c("Date", "Method", "value") 

group.colors <- c("#F8766D","#00BFC4","black", "black") 
ggplot(data=test_data_long3,aes(x=Date, y=value, colour=Method)) + geom_line()+ 
    scale_colour_manual(values=group.colors) 

В легенде, что отложена, она содержит 4 переменные, представляющие 4 линии, которые нарисованы. Я бы хотел удалить последнюю метку, так что у меня осталось 3 элемента в легенде: розовая, синяя и одна черная линия. Черную линию можно назвать «Средняя» и ссылаться на обе строки на графике. На данный момент он отличает две средние линии, когда на самом деле я не хочу этого различия.

Благодаря

+0

Имея данные + код, необходимый, чтобы сделать сюжет является большим, но это также важно включать пакеты, которые используются, чтобы сделать его легким для людей, чтобы помочь – alexwhan

+0

мою ошибку - я совсем забыл о пакетах. Я исправлю код. Ты подтолкнул меня на это. Спасибо! – sym246

ответ

2

Это как бы я подойти к нему - вместо того, чтобы сырые и средние данные в одном data.frame, я бы их разделить на две части.

test_data_long3_raw <- melt(test_data3[,1:3], id="Date") 
test_data_long3_mean <- melt(test_data3[,c(1,4:5)], id="Date") 

Тогда вы можете добавить geom_line для каждого. Использование colour = "mean" внутри aes() дает вам запись легенды, хотя цвет не отображается на переменную.

ggplot(test_data_long3_raw, aes(Date, value)) + geom_line(aes(colour = variable)) + 
    geom_line(data = test_data_long3_mean, aes(group = variable, colour = "mean")) + 
    scale_color_manual(values = c("black", "#F8766D","#00BFC4")) 

enter image description here

+0

Это то, что мне нужно - Спасибо! – sym246