添加图例(ggplot)不起作用

时间:2014-02-18 21:00:40

标签: r ggplot2

我觉得我问的是一个完全愚蠢的问题,但我不能强迫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"))

结果没有传说。

感谢您在本网站上找到的所有帮助,并提前感谢您帮助解决此问题。

1 个答案:

答案 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中有无数的例子说明了这个基本技术。