2014-11-07 3 views
13

Ich weiß, das klingt einfach, aber ich habe jetzt buchstäblich mehr als eine Stunde ohne Erfolg gesucht. Ich versuche einfach, ein 3D-Balkendiagramm in "R" mit dem Paket "ggplot2" zu plotten. Meine Datenrahmen sieht ungefähr so ​​aus:ggplot2 3D-Balkenplot

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 

und ich möchte so etwas wie diese auf sie zeichnen: enter image description here

Jede Hilfe ist mehr als geschätzt !!

+12

Sie, dass R-Liebhaber als eine reiche Quelle zu tun, denken Sie an Excel realisieren sollte _NOT_ Beispiele dafür, wie Dinge (richtig) und 3D-Barplots sind eine der am meisten veralteten Strategien für die Kommunikation von genauen quantitativen Informationen. –

+0

@BondedDust ha! Ja, das merke ich. wahrscheinlich der Grund, warum ich überhaupt keine Beispiele finden kann. aber ich will immer noch versuchen, und alle Hinweise von dir helfen ... ich muss nur wissen, wie man eine dritte Achse zu meiner 'geom_bar()' ' – maryam

+0

Dies kann eine Straße sein, die es wert ist, untersucht zu werden: http://stackoverflow.com/ Fragen/23261760/how-to-Generate-3-D-Balken-Graph-in-r – Docconcoct

Antwort

15

Wie in Kommentaren erwähnt, sind 3D-Plots normalerweise keine gute Wahl (wenn andere Optionen verfügbar sind), da sie dazu neigen, eine verzerrte/verdeckte Ansicht von Daten zu geben.

Das heißt, hier ist, wie Sie Ihre Daten mit latticeExtra beliebig zeichnen kann:

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 - gerade bemerkt, dass die Ebenen von 'z' falsch geordnet sind. Sie können dies korrigieren, indem Sie beim Erstellen des Faktors die Ebenenreihenfolge explizit angeben. – jbaums

+0

oh yeah, es geht med -> niedrig -> hoch statt hoch -> med -> niedrig danke für die Korrektur :) – maryam

+0

Was bedeutet 'y ~ x + z '? –