2014-07-18 12 views
6

io non sono in grado di cambiare i colori e tipi di linea del mio grafico corrente con più liscia (stat_smooth())ggplot2 stat_smooth multipla: cambiano colore e tipo di linea

Ecco una panoramica della struttura dei dati:

 serviceInstanceName   timestamp  value 
1 DE1Service-utilityPredicted 2014-02-22 10.000000 
2 SE1Service-utilityPredicted 2014-02-22  4.385694 
3 DE2Service-utilityPredicted 2014-02-22  0.000000 
4 US1Service-utilityPredicted 2014-02-22  2.230000 
5 DE1Service-utilityActual  2014-02-22 10.000000 
6 SE1Service-utilityActual  2014-02-22  8.011919 
7 DE2Service-utilityActual  2014-02-22  3.000000 
8 US1Service-utilityActual  2014-02-22  1.325191 
... 

Esistono otto istanze di servizio univoche con data/ora (asse y) e valore (asse x).

Ecco il codice:

ggplot(rmm, aes(x=timestamp, y=value, color=serviceInstanceName, group=serviceInstanceName)) 
+ stat_smooth(size=1.5, method = "loess", level = 0.95, fullrange = TRUE, se = FALSE) 
+ scale_x_datetime(breaks = date_breaks("1 day"), labels = date_format("%a/%m")) 
+ theme(axis.text.x = element_text(angle = 90, hjust = 1)) + xlab("Day") 
+ ylab("Utility") + ggtitle("Utility Trend") 

Ecco la trama: http://imgur.com/Tk02YXC

quello che voglio:

=> Per modificare manualmente i tipi di linea e colori di ogni valore unico * serviceInstanceName' attributo . Ho provato molte cose da scale_color_manual() .. fino a estrarre il valore del più liscio .. ma davvero non potevo risolvere questo.

Qualsiasi aiuto è apprezzato. Grazie!

risposta

5

Ebbene, i dati non era hlpeful per ricreare la trama così ho creato un diverso dati di esempio impostare

rmm<-data.frame(
    timestamp = as.POSIXct(rep(seq(as.Date("2014-01-01"), 
     as.Date("2014-01-10"), by="1 day"),5)), 
    serviceInstanceName = rep(letters[1:5], each=10), 
    value = cumsum(rnorm(50)) 
) 

e io non sono sicuro di quello che si è tentato, ma scale_color_manual dovrebbe aver funzionato. E se si desidera cambiare il tipo di linea è necessario impostare che nel aes()

library(ggplot2) 
library(scales) 

ggplot(rmm, aes(x=timestamp, y=value, 
    color=serviceInstanceName, linetype=serviceInstanceName)) + 
stat_smooth(size=1.5, method = "loess", level = 0.95, 
    fullrange = TRUE, se = FALSE) + 
scale_x_datetime(breaks = date_breaks("1 day"), 
    labels = date_format("%a/%m")) + 
theme(axis.text.x = element_text(angle = 90, hjust = 1)) + xlab("Day") + 
ylab("Utility") + ggtitle("Utility Trend") + 
scale_color_manual(values=c(a="orange",b="yellow", 
    c="red", d="sienna",e="cornsilk")) 

enter image description here

+0

grazie! la tua soluzione ha funzionato .. nel mio caso ho dovuto solo regolare: scale_color_manual (values ​​= c ('DE1Service-utilityPredicted' = '# 3182bd' ... (y) – philka

Problemi correlati