簡體   English   中英

從ggplot圖例中刪除單個標簽

[英]Remove a single label from ggplot legend

示例代碼:

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個項目,分別是粉紅色,藍色和一條黑色線條。 黑線可以稱為“平均”,並且將參考圖中的兩條線。 目前,它是在兩條平均線之間進行區分,而實際上,我不希望這種區分。

謝謝

這就是我的處理方式-而不是將原始數據和均值數據放在一個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"))

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM