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

mkk*_*mkk 0 r legend ggplot2

我有这个代码:

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))
Run Code Online (Sandbox Code Playgroud)

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

jor*_*ran 7

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

ggplot(data=dat, aes(x=x, y=val, colour=factor(SD))) + geom_line(aes(group=SD))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述