1

方向によって矢印の色を変えたいです。プロットに矢印を挿入することを考え出しましたが、現時点ではすべて黒です。左から右への矢印を緑で、右から左への矢印を赤で表示したいと思います。それは可能ですか?

ここに私の「短い」コードがあります:

library(ggplot2)

name = c("Name1","Name2", "Name1", "Name2")
time = c("1", "3","4","2")
value = c(5.1, 4.8, 4.1, 6.3)
data <- data.frame(name, time, value) 

p <- ggplot(data, aes(x=value, y=name)) +
  geom_point(aes(colour=time), shape=16, size=6) +
  geom_path(aes(group=name), arrow=arrow(length=unit(0.15,"cm")), colour="black", size=1) 
print(p)

あなたが提供できる助けを前もってありがとう!

4

2 に答える 2

1

n矢印方向のプロキシとして使用できるように見えるので、次のようになります。

p +  geom_path(aes(group=n), arrow=arrow(length=unit(0.15,"cm")), colour=c("red","green")[factor(n)], size=1)

ただし、より一般的には、次のようなものが必要だと思います。

p +  geom_path(aes(group=n), arrow=arrow(length=unit(0.15,"cm")), colour=c("red","black","green")[(sign(tapply(v,n,diff))+2)[n]], size=1)

v数値ではなく係数として使用することを意図していますか?

于 2013-04-04T16:19:18.140 に答える
1

という名前のデータに新しい列を追加できますdirection。ライブラリのname関数を使用するレベルごとに計算されます。変数は 2 つの値を持つか、特定の水準 (正または負)の最初の値と 2 番目の値の差に依存します。ddplyplyrdirectionTRUEFALSEvaluename

library(plyr)
data<-ddply(data,.(name),transform,direction=((value[1]-value[2])>0))
data
   name time value direction
1 Name1    1   5.1      TRUE
2 Name1    4   4.1      TRUE
3 Name2    3   4.8     FALSE
4 Name2    2   6.3     FALSE

この新しい変数を使用して の色を設定しgeom_path()ます。

ggplot(data, aes(x=value, y=name)) +
  geom_point(aes(colour=time), shape=16, size=6) +
  geom_path(aes(group=name), arrow=arrow(length=unit(0.15,"cm")), size=1,color=c("red","blue")[factor(data$direction)]) 
于 2013-04-04T16:28:39.083 に答える