2014-11-07 16 views
13

So che questo suona semplice, ma ho cercato letteralmente più di un'ora senza successo. Sto semplicemente cercando di tracciare un grafico a barre 3D in 'R' usando il pacchetto 'ggplot2'. Il mio dataframe simile a questa:ggplot2 3D Bar Plot

x y  z 
t1 5 high 
t1 2 low 
t1 4 med 
t2 8 high 
t2 1 low 
t2 3 med 
t3 50 high 
t3 12 med 
t3 35 low 

e voglio tracciare qualcosa di simile su di esso: enter image description here

Ogni aiuto è più che apprezzato !!

+12

si dovrebbe capire che gli appassionati di R pensano di Excel come una ricca fonte di esempi di come _NON_ fare cose (correttamente) e che i barattoli 3D sono una delle strategie più deprecate per la comunicazione di informazioni quantitative accurate. –

+0

@BondedDust ha! si, me ne rendo conto. probabilmente la ragione per cui non riesco a trovare alcun esempio. ma voglio ancora provare, e qualsiasi suggerimento da voi aiuterà ... ho solo bisogno di sapere come aggiungere un terzo asse al mio 'geom_bar()' – maryam

+0

Questa potrebbe essere una strada che vale la pena investigare: http://stackoverflow.com/ domande/23261760/how-to-generate-3-d-bar-graph-in-r – Docconcoct

risposta

15

Come menzionato nei commenti, i grafici 3D di solito non sono una buona scelta (quando sono disponibili altre opzioni) poiché tendono a fornire una visione distorta/oscurata dei dati.

Detto questo, ecco come è possibile tracciare i dati a piacere con latticeExtra:

d <- read.table(text=' x y  z 
t1 5 high 
t1 2 low 
t1 4 med 
t2 8 high 
t2 1 low 
t2 3 med 
t3 50 high 
t3 12 med 
t3 35 low', header=TRUE) 

library(latticeExtra) 

cloud(y~x+z, d, panel.3d.cloud=panel.3dbars, col.facet='grey', 
     xbase=0.4, ybase=0.4, scales=list(arrows=FALSE, col=1), 
     par.settings = list(axis.line = list(col = "transparent"))) 

enter image description here

+1

@maryam - appena notato che i livelli di 'z' sono ordinati in modo errato. È possibile correggere ciò dichiarando esplicitamente l'ordine di livello quando si crea il fattore. – jbaums

+0

oh sì, va med -> basso -> alto invece di alto -> med -> basso grazie per la correzione :) – maryam

+0

Cosa significa "y ~ x + z"? –