2012-10-17 22 views
6

Ho un set di dati con 224900 osservazioni e 10 variabili che sono il risultato di diverse trasformazioni della serie Taylor rispetto ai valori dei dati originali. Desidero sovrapporre i diagrammi di densità di ciascuna di queste 10 variabili per mostrare il livello di robustezza della trasformazione della serie di Taylor sulla stima dei dati. Invece di avere solo 10 righe, ho pensato che sarebbe stato utile applicare un colore, in modo che ogni grafico di densità contribuisca al 10% di una scala di grigi. Dove ci sono dati che si riferiscono solo a uno dei grafici, ci sarebbe il 10% di grigio, due trame sarebbero due volte più scure al 20%, fino a dove tutti i grafici di densità si sovrappongono, il che sarebbe del 100%.Sovrapposizione 10 grafici di densità in R con colore proporzionale al numero di grafici sovrapposti

Ho utilizzato melt per ottenere un dataframe lungo 2249000 righe. Vi sono tre colonne, la prima è l'ID della persona, la seconda è la variabile di raggruppamento (variable) e la terza è il valore dell'assunzione giornaliera di kJ (value).

Ho utilizzato il seguente codice per sovrapporre i grafici di densità in ggplot2 ma utilizza colori diversi per i gruppi. Come posso cambiare questo codice per ottenere la mia scala di grigi? Voglio che tutti e 10 i gruppi abbiano lo stesso colore e la stessa densità di colore; lo scopo della trama è semplicemente quello di mostrare visivamente la quantità di sovrapposizione sul grafico della densità utilizzando la scala dei grigi.

ggplot(Energy, aes(x=value, fill=variable)) + geom_density(alpha = 0.5) 

Alcuni dati di prova per giocare con per coloro che desiderano aiutare, con 5 gruppi e non 10:

variable <- c(rep("A",100), rep("B",100), rep("C",100), rep("D",100), rep("E",100)) 
value <- c(rnorm(100,5000,200), rnorm(100,5050,210), rnorm(100,5100,215), 
      rnorm(100,5150,220), rnorm(100,5200,225)) 
MyData <- cbind.data.frame(value, variable) 
ggplot(MyData, aes(x=value, fill=variable)) + geom_density(alpha = 0.5) 

Penso che la risposta può essere associato con la modifica scale_colour_grey e/o scale_manual ma io don non capisco abbastanza per risolverlo da solo

risposta

8

questo può essere fatto utilizzando un group estetica e rendendo il fill per la densità di una tonalità chiara di grigio come gray10 o gray20:

ggplot(MyData, aes(x=value, group=variable)) + geom_density(alpha = 0.5, fill="gray20") 

che vi darà:

Density plot

Nel tuo caso probabilmente vuoi gray10, dato che hai 10 gruppi, piuttosto che i 5 che sono tracciati qui.

+0

Grazie, è esattamente quello che volevo. Ho modificato 'fill =" gray20 "' a 'fill =" gray10 "' per il mio set di dati "corretto" di 10 gruppi e funziona perfettamente! – Michelle

Problemi correlati