Как бы преобразовать логический 'slope > 0'
в цвет в более сложный условный?использовать ifelse в aes_string для строки цвета
Если наклон> 0, то красная линия. Если наклон == 0, то синяя линия. Если наклон < 0, то черная линия.
# setup
library(dplyr)
library(ggplot2)
library(lazyeval)
set.seed(205)
dat = data.frame(t=rep(1:2, each=10),
pairs=rep(1:10,2),
value=rnorm(20))
dat$value[dat$pairs==1] <- 1 # forgot to set one pair to slope==0
# function
plotFun <- function(df, groupBy, dv, time) {
ggplot(df %>% group_by_(groupBy) %>%
mutate_(slope = interp(~(dv2[time2==2] - dv2[time2==1])/(2-1),
dv2=as.name(dv),
time2=as.name(time))),
aes_string(time, dv, group = groupBy,
colour = 'slope > 0')) +
scale_colour_manual(values=c("red", "black")) +
geom_point() +
geom_line() +
stat_summary(fun.y=mean,geom="line",lwd=2,aes(group=1))
}
# plot
plotFun(dat, "pairs", "value", "t")
Вы пробовали 'цвет =«IfElse (наклон> 0, "синий", IfElse (наклон == 0, "черный", "красный")) ') 'в отображении эстетики вместо' color =' slope> 0 ') 'и' + scale_color_identity() '? – lukeA
Спасибо, @lukeA. Мне не хватало 'scale_color_identity()'. –