将不同因子映射到R ggplot中的图例标签

时间:2016-06-29 13:38:18

标签: r ggplot2 legend

我想在我的传奇中提供更多信息。我想使用ID为每个图形赋予唯一的颜色。但我的传奇标签我想要包含一个因素,该因素对于不同的ID可以是相同的但对于一个ID总是不变的。 例如:

mydata <- data.frame(x=rep(1:10,5),
y=rep((1:10),5)*sort(rep((10:14)/10,10)),
ID=sort(rep(1:5,10)),
info1=sort(rep(c("A","B","C","D","C"),10)),
info2=sort(rep(c("GG","HH","HH","GG","II"),10)))

ggplot(mydata,aes(x=x,y=y,color=as.factor(ID)))+geom_line()

这给了我应该的情节以及显示ID的图例。

enter image description here

现在我的问题是如何用info1中的因子替换ID,同时为每个图保留不同的颜色。更好的方法是将info1和info2中的信息包含在一个传奇中......

我知道如何使用额外的invisibe图来获取其他传说,但这不是我想要的:

ggplot(mydata,aes(x=x,y=y,color=as.factor(ID)))+geom_line() +
geom_point(aes(shape=NA,size=info1,fill=info2)) + guides(color=FALSE)

enter image description here

相反,我希望第一张图片中的图例,但第二张图片中的信息(标签)。当然,只从data.frame获取信息,而不是明确地给出它。

感谢您的建议

1 个答案:

答案 0 :(得分:1)

IDinfo1info2粘合在一起,并将其作为ID工作?

mydata$ID2 = paste(mydata$ID,paste(mydata$info1),paste(mydata$info2), sep='-')

ggplot(mydata,aes(x=x,y=y,color=as.factor(ID2)))+geom_line()

enter image description here