2017-06-09 75 views
0

第一次在這裏發佈海報。已經在搜尋該網站(和其他人)以解決下圖所示的問題。儘管我嘗試了許多不同的解決方案來解決我在這裏和其他地方遇到的類似問題,但我無法從誤差位置移動。在ggplot2條形圖中出現的錯誤條過低

enter image description here

的問題時我是否會產生一個單獨的圖形或兩者並用gridExtra將它們結合起來。

下面是代碼和每個數據集的一個樣本包括:

第一數據集例如:

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 

第二:

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 

代碼:

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() 

將真的很喜歡獲取這些數據,所以將不勝感激任何建議。

+0

歡迎SO。請編輯您的問題,並提供一個[可重現的示例](https://cran.r-project.org/web/packages/reprex/README.html#what-is-a-represent),展示您的問題,並且已經準備就緒在新的R會話中複製粘貼。 – lukeA

+0

如果您計算每個方面的兩個級別的均值,您會注意到誤差線的中心位置正確。 –

回答

2

最好是使用geom_errorbar。首先,你必須做出一個新的data.frame每酒吧一條線,包括標準差(我添加了一個「後」的時間點來展示如何這個樣子):

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

然後,這個ggplot通話將工作:

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 

屈服這一形象:

+0

工作完美!傳說! –