2016-08-18 188 views
0

更新: 我有以下數據,我想根據3個因子的斜率在組之間劃一條線(「I」,「II 」, 「III」)。根據「多種因素」斜率改變ggplot中的線顏色

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)) 

我曾嘗試以下,但我不能管理連接更改連接 「I」 行的顏色 - 「III」 和 「II」 - 「三」:

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

我希望我能解釋我的問題。

+0

期望的輸出不清楚。請張貼您最終想要的內容的例子。另外,我們沒有定義對象'GM',我們看不到你遇到的錯誤。 –

+0

也找不到@PierreLafortune'slope' – amrrs

+1

@amrrs我相信'slope'是在mutate表達式中創建的。 –

回答

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計算斜率。

+0

@boucyball 非常感謝您的幫助,它完美的工作。但是我的實際問題有點複雜。我可以請你看看下面的鏈接: http://stackoverflow.com/questions/39036198/group-factorial-data-with-multiple-factors-error-incompatible-size-0-expe 非常感謝 – Rui

+0

我已經做到了,但是因爲我是新來的,所以不會改變公開顯示的帖子得分 – Rui