2015-12-02 42 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。在aes()中使用colour = "mean"可爲您提供圖例條目,即使顏色未映射到變量。

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