0
ラインセグメントの色を、その前のポイントよりも大きいかどうかに基づいて変更しようとしています。私はここで間違って何をしていますか?ggplotの増減に基づくライン
例:
from [1,4] to [2,5] would be green because the y value is increasing.
from [1,4] to [2,1] would be red because the y value is decreasing.
マイコード:
set.seed(42)
df<-NULL
df$x<-rnorm(10,0,10)
df$y<-rnorm(10,0,10)
df$colors<-cbind(lapply(1:length(df$x),function(i){
ifelse(df$x[i]>df$x[i-1],"#CC6666","#9999CC")
}))
df<-data.frame(df)
ggplot()+
geom_line(aes(x=df$x,y=df$y),size=1.5,colour=df$color)+
scale_color_manual(values=df$color)
これはうまく動作しますが、グループによって混乱しています。値が大きい場合は、変数を並べ替えて新しい列「1」を作成します。値が小さい場合は、自動的に別のグループに割り当てられますか? – Rilcon42
グループはちょうどそこにあります。なぜなら、ggplotは(定義されていれば)美学に基づいてグループ化しようとしていますから、グルーとして「1」を使用して、それらをすべて同じ行に保持します。配列はちょうどx軸上の順序に関連して適切な 'i + 1'比較をしています – Nate