2016-04-15 16 views
0

Ich habe eine Reihe von Experimenten über 10 Phasen oder Monaten durchgeführt. Ich züchte Bakterien von 3 verschiedenen TYPEN und zähle das Wachstum (ACC).Facettierte gruppierte Boxplot r mit oder ohne ggplot2

Ich versuche eine facet_wrap gruppierte Boxplot des Wachstums über verschiedene Phasen für die drei Bakterienarten (A, E und H) zu bekommen. Meine Daten:

head(EAH) 
    ACC sample site bed phase X.M.SA TYPE 
1 SG  A 1 0  1  NO E 
2 SG  A 2 0  1  NO A 
3 MG  A 3 0  1  NO H 
4 SG  A 4 0  1  NO A 
5 LG  A 1 0  2  NO E 
6 LG  A 2 0  2  NO H 

Einige repräsentative Daten, die aus irgendeinem Grund nicht funktioniert:

EAH<- data.frame(ACC=factor(sample(1:5,10,replace=T), label=c("NG","SG","LG","MG","GH")), 
       Phase=factor(seq(1,10,1)), 
       TYPE=factor(sample(1:3,10,replace=T), label=c("A","E","S"),replace=T)) 

ich ggplot2 bin versucht, obwohl, wenn es ohne das ok ist auch getan werden kann.

ggplot(EAH, aes(x=as.factor(EAH$phase), y=EAH$ACC, group=EAH$TYPE)) + 
    geom_boxplot(aes(fill=factor(EAH$TYPE)))+ facet_grid(. ~ as.factor(EAH$phase)) 

Hier ist, was ich bisher geschafft haben, aber es Facette nicht bekommen kann:

enter image description here

So etwas wie die dritte Graph nach unten auf diesen Beitrag gut aussieht: ggplot: arranging boxplots of multiple y-variables for each group of a continuous x

EDIT

New Code ist in der Nähe, aber ich habe um ACC in numerisch zu ändern. Kann ich die Etiketten als NG, SG, LG, MG, HG auf der Y-Achse zurückbekommen?

ggplot(EAH, aes(x=TYPE, y=as.numeric(ACC))) + 
    geom_boxplot(aes(fill=TYPE))+ facet_grid(. ~ phase) 

enter image description here

Schlusscode:

library(RColorBrewer) 
library(ggplot2) 
ggplot(EAH, aes(x=TYPE, y=as.numeric(ACC))) + 
    geom_boxplot(aes(fill=TYPE))+ 
    facet_grid(. ~ phase) + 
labs(x = "Phase", y = "Growth",color="Type")+ 
scale_fill_brewer(palette="Blues")+ 
theme_bw()+ 
theme(strip.background=element_rect(fill="black"))+ 
theme(strip.text=element_text(color="white", face="bold"))+ 
scale_y_discrete(breaks=c("1", "2", "3","4","5"), 
        labels=c("NG", "SG", "LG","MG","HG")) 

und Ergebnis: enter image description here

+0

Dies ist eine FAQ. Sie haben ggplot2 bereits gesagt, wo Sie nach den Variablen suchen sollen. Verwenden Sie nicht EAH $! – Roland

+0

Vielen Dank für das Betrachten. Ich habe mindestens 10 verschiedene ggplot-Codes ausprobiert, meistens von stackoverflow, aber keine funktioniert für mich. Ich verstehe nicht, was dieser Fehler bedeutet: Fehler in layout_base (data, cols, drop = drop): Mindestens eine Ebene muss alle Variablen enthalten, die für die Facettierung verwendet werden. Auch warum sollte ich nicht EAH $! – HCAI

Antwort

1

ggplot2 Nicht-Standard-Auswertung verwendet. Es sucht nach Variablen im data.frame, die an den Parameter data übergeben werden. So können Sie das einfach tun:

ggplot(EAH, aes(x=Phase, y=ACC)) + 
    geom_boxplot(aes(fill=TYPE))+ facet_grid(. ~ Phase) 

Und natürlich ist R Groß-und Kleinschreibung.

+0

Vielen Dank für das Beispiel, ich schätze es sehr. Ich habe es geändert in: ggplot (EAH, aes (x = TYPE, y = as.numeric (ACC))) + geom_boxplot (aes (füllen = TYPE)) + facet_grid (. ~ Phase), die das richtige gibt Split, aber da ich ACC numerisch machen musste, kann ich die Level auf der Yaxis nicht sehen (siehe meine Bearbeitung in meinem Post). Was denken Sie? – HCAI

+0

Ein Boxplot muss eine numerische Y-Achse haben (und muss auf numerischen Werten basieren). Was Sie dort zeigen, ist kein Boxplot. In der Tat kann ich deine Handlung nicht verstehen. – Roland

+0

R konvertiert die Wachstumsraten (Kein Wachstum, spärliches Wachstum usw.) in numerische Werte 1,2,3 usw., um sie zu plotten. Ist ein Boxplot der falsche Weg, um diese Art von Daten anzuzeigen? Im Wesentlichen habe ich hier eine Ordinale kategorische Y-Achse ... – HCAI

Verwandte Themen