2017-06-09 6 views
0

Zum ersten Mal hier. Ich habe die Seite (und andere) nach einer Lösung für das unten abgebildete Problem durchsucht. Ich kann die Fehlerbalken nicht von ihrer "niedrigen" Position bewegen, obwohl ich viele verschiedene Lösungen für ähnliche Probleme getestet habe, denen ich hier und anderswo begegnet bin.Fehlerbalken zu niedrig in ggplot2 Balkenplot

enter image description here

Das Problem tritt auf, ob ich ein Diagramm allein oder die beiden produzieren und sie mit gridExtra kombinieren. Hier

ist der Code und eine Probe jedes Datensatzes enthalten:

Erste-Datensatz Beispiel:

Group  PSQI Time_Point 
1 Control 2 Baseline 
2 Control 2 Baseline 
3 Control 2 Baseline 
4 Control 13 Baseline 
5 Control 1 Baseline 
6 Control 7 Baseline 

Zweitens:

Group ESS Time_Point 
1 Control 3 Baseline 
2 Control 4 Baseline 
3 Control 1 Baseline 
4 Control 0 Baseline 
5 Control 7 Baseline 
6 Control 11 Baseline 

Code:

library(gridExtra) 
library(ggplot2) 
library(grid) 

p1 <- ggplot(PSQI_Graph,aes(fill=Group,y=PSQI,x=Time_Point)) + 
    geom_bar(position="dodge",stat="identity", width = 0.50) + 
    stat_summary(fun.data = mean_cl_normal, geom = "errorbar", position = 
position_dodge(.5), width = .25)+ 
    guides(fill = F)+ 
    scale_y_continuous(name = "Mean PSQI Score", limits=c(0,25))+ 
    xlab("Time Point") + 
    guides(fill = guide_legend(keywidth = 1.5, keyheight = 1))+ 
    theme_bw() 

Would mag es wirklich Holen Sie diese Daten heraus, so würden Sie irgendwelche Vorschläge schätzen.

+0

Willkommen bei SO. Bitte bearbeiten Sie Ihre Frage und stellen Sie ein [reproduzierbares Beispiel] (https://cran.r-project.org/web/packages/retexme.html#what-is-a-rex) bereit, das Ihr Problem darstellt und das bereit ist Kopieren-Einfügen-Ausführen in einer neuen R-Sitzung. – lukeA

+0

Wenn Sie den Mittelwert für beide Ebenen in jeder Facette berechnen, werden Sie feststellen, dass die Mitte der Fehlerbalken genau dort liegt, wo der Mittelwert ist. –

Antwort

2

Es wäre besser zu verwenden geom_errorbar. Zunächst werden Sie eine neue data.frame mit einer Zeile pro bar, einschließlich der Standardfehler machen müssen (Ich habe eine „After“ Zeitpunkt zu zeigen, wie diese aussieht):

Group PSQI Time_Point StdErr 
1 Control 4.50 Baseline 1.91 
2 Control 7.17  After 0.79 

Dann wird dieser ggplot Aufruf arbeiten :

ggplot(psqi, aes(fill=Group, y=PSQI, x=Time_Point, ymin=PSQI-StdErr, ymax=PSQI+StdErr)) + #the ymin and ymax parameters here tell it where to put the top and bottom error bars 
    geom_bar(stat="identity") + 
    geom_errorbar() #you can change the width and thickness of the bars 

dieses Bild Nachgeben:

+0

Arbeitete perfekt! Legende! –

Verwandte Themen