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。它是针对library中的每个name使用函数级别计算的。变量可以有两个值或取决于特定级别(正或负)的第一个值和第二个值之间的差异。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 回答