Странная легенда, использующая aes (цвет) в ggplot2 - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть этот код:

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 Ответ

7 голосов
/ 23 сентября 2011

Легенда не указывает на наличие 6 кривых. Вы сопоставили переменную SD непрерывный с эстетическим цветом, что приводит к непрерывной цветовой шкале, то есть градиенту. Если вам нужны только три значения в легенде, попробуйте обернуть SD в factor:

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

enter image description here

...