根据"几个因素改变ggplot中的线条颜色"斜率

时间:2016-08-18 17:13:47

标签: r ggplot2

更新: 我有以下数据,我想根据3个因素的斜率在各组之间画一条线(" I"," II"," III&# 34。)

set.seed(205)
dat = data.frame(t=rep(c("I","II","III"), each=10), 
             pairs=rep(1:10,3), 
             value=rnorm(30), 
             group=rep(c("A","B"), 15))

我尝试过以下方法,但我无法连接改变连接线的颜色"我" - " III"和" II" - " III":

ggplot(dat %>% group_by(pairs) %>%
     mutate(slope = (value[t=="II"] - value[t=="I"])/( value[t=="II"])- value[t=="I"]),
   aes(t, value, group=pairs, linetype=group, colour=slope > 0)) +
geom_point() +
geom_line()

这是一个非常类似的问题 Changing line color in ggplot based on slope

我希望我能够解释我的问题。

1 个答案:

答案 0 :(得分:1)

我们可以拆分数据,得到你想要的东西:

#calculate slopes for I and II
dat %>% 
    filter(t != "III") %>%
    group_by(pairs) %>%
    # use diff to calculate slope
    mutate(slope = diff(value)) -> dat12

#calculate slopes for II and III
dat %>% 
    filter(t != "I") %>%
    group_by(pairs) %>%
    # use diff to calculate slope
    mutate(slope = diff(value)) -> dat23

ggplot()+
    geom_line(data = dat12, aes(x = t, y = value, group = pairs, colour = slope > 0,
                                linetype = group))+
    geom_line(data = dat23, aes(x = t, y = value, group = pairs, colour = slope > 0,
                                linetype = group))+
    theme_bw()

enter image description here

由于dat中的数据按t排序,我使用diff来计算斜率。