Usando questo esempio di giocattolo;
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)
Sono in grado di tracciare i miei dati (senza legenda / etichette per le linee), usando il sotto
ggplot(data=DF,aes(x=ddd,y=vvv)) +
geom_line(aes(group=rrr))
Ma desidero aggiungere colori / legende, quindi modifico quanto sopra con;
ggplot(data=DF,aes(x=ddd,y=vvv)) +
geom_line(aes(group=rrr)) +
geom_line(aes(colour=rrr))
Ma questo restituisce il seguente errore
Error in x[1:min(n, length(x))] :
only 0"s may be mixed with negative subscripts
Qualche idea su quale sia il problema o su cosa dovrei controllare nella mia cornice dati?
risposte:
0 per risposta № 1Perché ddd
è un fattore, è necessario utilizzare entrambi group
e colour
sul stesso strato. Nel tuo esempio, stai usando due livelli, uno senza group
e uno senza colour
:
ggplot(data=df,aes(x=ddd,y=vvv)) +
geom_line(aes(group=rrr, colour=rrr))
Un'alternativa è quella di convertire le date in formato data invece che in fattore, anche se con le date così lontane che potresti voler sfaccettare rrr
(inoltre, nota in questo modo che la roba viene effettivamente visualizzata nell'ordine corretto):
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")