/ / Kolorowanie linii w ggplot zwraca błędy „ujemnych indeksów dolnych” - r, ggplot2

Linie kolorowania w ggplot zwracają błędy "ujemnych indeksów dolnych" - r, ggplot2

Korzystając z tego przykładu zabawki;

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)

Mogę wykreślić swoje dane (bez legendy / etykiet dla linii), korzystając z poniższego opisu

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

Ale chcę dodać kolory / legendy, więc modyfikuję powyższe za pomocą;

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

Ale to zwraca następujący błąd

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

Masz pojęcie, na czym polega problem lub co powinienem sprawdzić w ramce danych?

Odpowiedzi:

0 dla odpowiedzi № 1

Bo ddd jest czynnikiem, musisz użyć obu group i colour na podobnie warstwa. W twoim przykładzie używasz dwóch warstw, jednej bez groupi jeden bez colour:

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

wprowadź opis obrazu tutaj

Alternatywą jest przekonwertowanie dat na format daty zamiast na czynniki, choć przy tak odległych datach możesz chcieć się do nich dostosować rrr (zauważ też, że w ten sposób rzeczy faktycznie pojawiają się we właściwej kolejności):

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

wprowadź opis obrazu tutaj