我觉得我问的是一个完全愚蠢的问题,但我不能强迫ggplot显示线条颜色的图例。
问题是我有两个具有相同数据的数据帧,只有第一个data.frame表示新数据(加上其他数字),第二个表示旧数据。我试图比较新旧数据,从而了解哪些是我必须看到的传说。我试过使用scale_colour_manual,但它仍然没有出现。
我已经在类似的问题上阅读了许多不同的答案,但没有对它们起作用或导致更好的问题。您可以在下面看到我的问题的一个简单示例:
rm(list = ls())
library(ggplot2)
xnew<-3:10
y<-5:12
xold<-4:11
years<-2000:2007
xfact<-rep("x", times=8)
yfact<-rep("y", times=8)
Newdata<-data.frame(indicator=c(xfact,yfact),Years=c(years,years), data=c(xnew,y))
Olddata<-data.frame(indicator=xfact,Years=c(years), data=xold)
graph<-ggplot(mapping=aes(Years, data, group=1)) +
geom_line(,Newdata[Newdata=="x",], size=1.5, colour="lightblue")+
geom_line(,Olddata[Olddata=="x",], size=1.5, colour="orange")+
ggtitle("OLD vs NEW")+
scale_colour_manual(name="Legend", values=c("New"="lightblue", "Old"="orange"))
结果没有传说。
感谢您在本网站上找到的所有帮助,并提前感谢您帮助解决此问题。
答案 0 :(得分:0)
通过将美学映射到单个变量,在ggplot中创建了图例。你的错误是你试图在每一层手动设置颜色。
Newdata$type <- "New"
Olddata$type <- "Old"
all_data <- rbind(Newdata,Olddata)
ggplot(data = all_data[all_data$indicator == 'x',],aes(x = Years,y = data,colour = type)) +
geom_line() +
ggtitle("OLD vs NEW") +
scale_colour_manual(name="Legend", values=c("New"="lightblue", "Old"="orange"))
ggplot here中有无数的例子说明了这个基本技术。