2014-09-23 17 views
10

Sto cercando di combinare trame a densità multiple con sovrapposizione. ggplot e geom_density fanno il lavoro, ma le densità sono impilate l'una sull'altra. This is overlaid but not 3dR: Procedura: diagramma di densità 3D con gplot e geom_density

ggplot(all.complete, aes(x=humid_temp)) + 
    geom_density(aes(group=height, colour=height, fill=height.f, alpha=0.1)) + 
    guides(fill = guide_legend(override.aes = list(colour = NULL))) + 
    labs(main="Temperature by Height", x="Temperature", y="Density") 

Qualcosa di simile a questo è quello che sto cercando di realizzare: Density? with 3d overlay

Nel mio caso, gli anni sarebbero stati sostituiti da altezza.

Grazie !!!

+0

E dopo, possiamo vedere una serie di curve di livello disposte pseudo-perpendicolarmente a un asse del tempo? No davvero. Non sono il solito me stesso sarcastico qui. Penso che questo sia fatto nel libro Lattice, Figura 14.3 (ma non con la disposizione pseudo 3D.) –

+1

'ggplot' non fa grafica 3D. Se vuoi il grafico inferiore, dovrai usare un pacchetto diverso. Potresti provare sfaccettature, ma con così tanti gruppi che potrebbero non essere informativi. – jlhoward

risposta

2

So che questo vecchio, ma altre persone con questo tipo di problema può inciampare su questo post, in modo da ho pensato di aggiungere una soluzione scoperta di recente. C'è un nuovo pacchetto che è stato appena creato per fare esattamente questo tipo di visualizzazione e si chiama ggjoy ed è progettato per funzionare con il sistema ggplot2.

Tutte le informazioni si possono trovare qui: https://github.com/clauswilke/ggjoy

Spero che questo possa essere di aiuto!

+0

Finalmente! Grazie, Daniel! – rafaelvalle

2

Come @jlhoward ha menzionato, l'utilizzo di sfaccettature potrebbe funzionare o utilizzare sottotrame, ma entrambe le opzioni non si adattano bene a un numero elevato di gruppi. Considera invece l'utilizzo di un grafico ecdf.

Senza i dati nel tuo all.complete oggetto, non posso ricreare la trama, ecco un esempio semplificato:

library(ggplot2) 

ggplot(iris, aes(x = Sepal.Length)) + 
    geom_density(aes(group = Species, 
        colour = Species, 
        fill = Species), 
       alpha = 0.2) 

density plot

Per più di un paio di gruppi, I' ho trovato grafici ecdf molto più semplici da interpretare. Per fare una trama simile:

ggplot(iris, aes(x = Sepal.Length)) + 
    stat_ecdf(aes(color = Species)) 

ecdf plot

Si possono avere decine di appezzamenti ecdf sul terreno stesso, e dal momento che sono solo linee sono ancora separati abbastanza per vederlo. I grafici di densità o gli istogrammi sarebbero troppo sovrapposti, come nel tuo esempio.

Questo è il post sul blog che mi ha fatto iniziare a utilizzare ecdf trame e ha più informazioni su di loro: http://allendowney.blogspot.com/2013/08/are-my-data-normal.html