ggplot中的着色线返回“负下标”错误

时间:2014-02-04 12:19:48

标签: r ggplot2

使用这个玩具示例;

ddd <- c("31/03/1995","30/04/1995","31/05/1995","31/08/2013","30/09/2013","31/10/2013","30/11/2013")
rrr <- c("returns.1","returns.1","returns.1","returns.5","returns.5","returns.5","returns.5")
vvv <- c(-0.204598992791177,3.01855013302475,6.3888266761452,-1.21353731479968,7.20845451481339,3.97428317355226,0.0155720962396065)

df <- cbind(ddd,rrr,vvv)
df <- as.data.frame(df)
df$vvv  <-  as.numeric(df$vvv)

我可以使用下面的

绘制我的数据(没有线条的图例/标签)
ggplot(data=DF,aes(x=ddd,y=vvv)) +
geom_line(aes(group=rrr)) 

但是我希望添加颜色/图例,所以我修改上面的内容;​​

ggplot(data=DF,aes(x=ddd,y=vvv)) +
geom_line(aes(group=rrr)) +
geom_line(aes(colour=rrr))

但是这会返回以下错误

Error in x[1:min(n, length(x))] : 
only 0's may be mixed with negative subscripts

知道问题是什么,或者我应该在数据框中检查什么?

1 个答案:

答案 0 :(得分:0)

由于ddd是一个因素,您需要在相同的图层上同时使用groupcolour。在您的示例中,您使用的是两个图层,一个没有group,另一个没有colour

ggplot(data=df,aes(x=ddd,y=vvv)) +
  geom_line(aes(group=rrr, colour=rrr))

enter image description here

另一种方法是将您的日期转换为日期格式而不是因素,但是如果您的日期相距甚远,您可能希望通过rrr进行分析(同样,注意这样的方式实际上会以正确的顺序显示) :

df$ddd <- as.Date(df$ddd, format="%d/%m/%Y")
ggplot(data=df,aes(x=ddd,y=vvv)) +
  geom_line(aes(colour=rrr)) +
  facet_wrap(~ rrr, scales="free_x")

enter image description here