在ggplot2中使用aes(颜色)的奇怪传奇

时间:2011-09-23 02:59:45

标签: r ggplot2 legend

我有这段代码:

x <- seq(-600, 600, length=10000)
dat1 <- data.frame(x=x, SD=400, val = (1/(1+10^(-x/400))))
dat2 <- data.frame(x=x, SD=200, val = (1/(1+10^(-x/200))))
dat3 <- data.frame(x=x, SD=600, val = (1/(1+10^(-x/600))))
dat <- rbind(dat1, dat2, dat3)
ggplot(data=dat, aes(x=x, y=val, colour=SD)) + geom_line(aes(group=SD))

我的预期是有3条曲线而且我这样做。然而,图例显示有6条曲线 - 对于SD 100,200,300,400,500,600而不是200,400,600。为什么会这样,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:7)

图例未指示存在6条曲线。您已将连续变量SD映射到美学颜色,从而产生连续的色标,即渐变。如果您只想要图例中的三个值,请尝试在factor中包装SD:

ggplot(data=dat, aes(x=x, y=val, colour=factor(SD))) + geom_line(aes(group=SD))

enter image description here