2013-02-25 14 views
5

Quando si utilizza normalmente factor per le variabili di codifica colore/dimensione in ggplot2 in R? Esempio:quando usare factor() quando si stampa con ggplot in R?

ggplot(mtcars) + geom_point(aes(x=mpg, y=drat, colour=gear)) 

versus:

ggplot(mtcars) + geom_point(aes(x=mpg, y=drat, colour=factor(gear))) 

è la regola generale di utilizzare factor quando la variabile viene utilizzato per determinare la forma/taglia/colore è discreto, e non continuo? O c'è un altro uso di factor in questo contesto? Sembra che il primo comando possa essere eseguito come il secondo con la legenda corretta, anche senza factor. Grazie.

Edit: ottengo questo quando uso il colour=gear: enter image description here

+4

Sì, dipende da ciò che si desidera mostrare. Se sei incline a trasmettere un senso di gradazione, usi una variabile continua, ma se vuoi mostrare i gruppi, la scommessa più sicura è quella di convertire in fattore. –

+1

Utilizzare 'factor' quando si hanno variabili codificate numericamente che rappresentano di fatto categorie. – Andrie

risposta

6

Il problema non è la leggenda, è la scelta dei colori. Quando non è un fattore, i punti sono diverse sfumature dello stesso colore:

ggplot(mtcars) + geom_point(aes(x=mpg, y=drat, colour=gear)) 

enter image description here

Questo comunica un continuum di punti, e non è quindi ideale per una serie di possibilità separati. (In effetti, una volta arrivati ​​a cinque o sei possibilità, i colori possono essere difficili da distinguere l'uno dall'altro).

Quando gearsè trattato come un fattore, i colori sono scelti per essere distinguibili:

ggplot(mtcars) + geom_point(aes(x=mpg, y=drat, colour=factor(gear))) 

enter image description here

Si noti che se non stai ricevendo un grafico di gradiente quando non si utilizza factor, dovresti provare ad aggiornare ad una versione più recente di ggplot2.

+0

Come si ottiene la prima trama? Non ho una legenda del gradiente quando uso solo 'color = gear'. – user248237dfsf

+0

@ user248237: ho postato il mio codice sopra ogni cifra, credo che sia esattamente uguale al tuo. È possibile che nel tuo frame di dati (versione di R?), 'Gear' sia già un fattore? Cosa ottieni da 'class (mtcars $ gear)'? –

+0

Ottiene 'class (mtcars $ gear) [1]" numeric "' quando digito ciò che hai scritto. Sto usando RStudio. – user248237dfsf

Problemi correlati