2015-05-06 8 views
5

Sto attraversando un periodo difficile con uno schema di colorazione in ggplot. Se qualcuno potesse aiutarmi o mandarmi ad un'altra domanda sarebbe fantastico.Colorare un grafico a linee basato su un terzo fattore in ggplot

Ho dati che guardano lungo le linee di

day=rep(1:10, 5) 
year=rep(1992:1996, each=10) 
state=rep(c("A","B"), each=25) 
set.seed(4) 
y=runif(50, 5.0, 7.5) 
df=data.frame(year,day,state,y) 
> head(df) 
    year day state  y 
1 1992 1  A 6.464501 
2 1992 2  A 5.022364 
3 1992 3  A 5.734349 
4 1992 4  A 5.693437 
5 1992 5  A 7.033936 
6 1992 6  A 5.651069 

Voglio creare un grafico simile a quello qui sotto. Utilizzando il codice:

library(ggplot2) 
p = ggplot(df, aes(day, y)) 
p = p + geom_line(aes(colour = factor(year))) 
print(p) 

Line Plot

Voglio la colorazione ad essere basato fuori della variabile state. Vorrei che gli anni che sono nello stato "A" fossero di un colore e che gli anni nello stato "B" ne fossero un altro.

Grazie

+0

Questo non funziona: color = fattore (stato) '' ? Invece di 'color = factor (year)'. – zx8754

+0

Quindi vuoi colori separati per ogni combinazione di stato e anno? In tal caso, 'color = interaction (state, factor (year))'. – eipi10

+0

Il tuo grafico potrebbe essere più facile da capire se utilizzi un'estetica differente per 'state', come linetype o linewidth. – eipi10

risposta

5

Se lo vuoi separato da anni, ma colorata dallo stato la chiave è quella di utilizzare l'argomento group =:

ggplot(data=df, aes(x=day, y=y, group=year, colour=state)) + 
    geom_line() + 
    geom_point() 
+0

Grazie Forrest! Questo è esattamente quello che stavo cercando! –

+0

Sei il benvenuto! –

Problemi correlati