2016-05-03 3 views
3

Ich bin eine binomische Variable Plotten (0/1) „abgebrochen“ im folgende Skript aufgerufen:Wie binomischen variabler Prozentsatz Balkendiagramm plotten mit ggplot2

`ggplot(sab2, aes(x=locality,fill=factor(aborted))) + geom_bar() + scale_fill_manual() + scale_fill_grey(labels = c("aborted","alive")) + xlab("") + ylab("N empty fruits per plant") + guides(fill=guide_legend(title="Fruits vitality")) + facet_grid(~year) + theme_bw() + theme(legend.position = "bottom", panel.background = element_rect(fill = "white"), panel.grid.major = element_line(colour = "white"), axis.text.x=element_text(angle=90,hjust=1,vjust=0.5))`  

und dies war das Ergebnis:

Was könnte ich in meinem Code ändern, wenn ich nur den Prozentsatz der abgebrochenen (die "0" Ebene des "abgebrochen" -Faktors) plotten möchte? Ich könnte eine Darstellung ähnlich wie die Folge erhalten (aber mit% der abgebrochenen):

enter image description here

es Ihnen danken!

Antwort

3

Verwenden stat_summary den Mittelwert von aborted, zu berechnen, die abgebrochen nur der Prozentsatz ist, wenn aborted auf Werte von 0 oder 1 nimmt dann können Sie auch stat_summary mit mean_cl_boot verwenden, um einen Bootstrap-Konfidenzintervall von 95% zu erhalten. Hier ist ein Beispiel mit gefälschten Daten:

library(scales) 

set.seed(389) 
sab2 = data.frame(locality=rep(1:6,each=100), aborted=sample(0:1, 600, replace=TRUE)) 

ggplot(sab2, aes(factor(locality), aborted)) + 
    stat_summary(fun.y=mean, geom="bar", fill="grey70") + 
    stat_summary(fun.data=mean_cl_boot, geom="errorbar", width=0.2) + 
    scale_y_continuous(labels=percent_format(), limits=c(0,1)) + 
    theme_bw() 

enter image description here

Punkte besser sein könnte als ein BarPlot hier:

ggplot(sab2, aes(factor(locality), aborted)) + 
    stat_summary(fun.data=mean_cl_boot, geom="errorbar", width=0.2) + 
    stat_summary(fun.y=mean, geom="point", shape=21, fill="red", size=2) + 
    scale_y_continuous(labels=percent_format(), limits=c(0,1)) + 
    theme_bw() 

enter image description here

Oder die Prozentwerte als die Punktmarken verwenden:

ggplot(sab2, aes(factor(locality), aborted)) + 
    stat_summary(fun.data=mean_cl_boot, geom="errorbar", width=0.2, colour="grey60") + 
    stat_summary(fun.y=mean, geom="text", size=3, colour="red", 
       aes(label=paste0(sprintf("%1.1f", ..y..*100),"%"))) + 
    scale_y_continuous(labels=percent_format(), limits=c(0,1)) + 
    theme_bw() 

enter image description here

+0

Vielen Dank. Ihr gefälschtes Dataset funktioniert, aber nicht meins. Die Fehlermeldung lautet: "Fehler: Diskreter Wert an kontinuierliche Skalierung". Dies ist die Struktur meines Datensatzes: data.frame ': \t 1680 obs. von 6 Variablen: $ Jahr: Faktor w/2 Niveaus "2013", "2014": 1 1 ... $ Örtlichkeit: Ord.Factor w/6 Niveaus "A" <"B" <..: 5 5 ... $ plot: Faktor w/98 Ebenen "CM1", "CM10", "CM11", ..: 1 1 ... $ Samen: int 3 0 4 6 2 5 6 1 5 5 ... $ abgebrochen: Faktor mit 2 Stufen "0", "1": 2 1 2 2 2 2 2 2 2 2 ... – Elena

+0

Es sieht so aus, als ob 'abgebrochen' ein Faktor ist. Es muss numerisch oder ganzzahlig sein mit den Werten 0 oder 1, um Prozentsätze nach der Methode in meiner Antwort zu erhalten. Das ist der Fehler "Diskreter Wert, der einem kontinuierlichen Maßstab zugeführt wird". Sie führen "scale_y_continuous" aus, aber Ihr y-Wert ist eine kategoriale (d. H. Faktor) Variable. – eipi10

+0

vielen dank! jetzt kann ich arbeiten, um mein Problem zu lösen, Prost! – Elena