2016-07-05 4 views
0

Я пытаюсь сделать график с несколькими строками и с stat_summary, определяющим средние значения. Когда я применяю geom_errorbar(), некоторые из них помещаются с некоторым расстоянием, чтобы означать показания, а это значит, что некоторые из них «летают». Что происходит?Неверное расположение errorbars

Спасибо!

Мой код:

#First I add another data set with SE, SD and mean. 
cdata <- ddply(data2, c("OGTT","Treatment"), summarise, 
       N = sum(!is.na(Glucose)), 
       mean = mean(Glucose, na.rm=TRUE), 
       sd = sd(Glucose, na.rm=TRUE), 
       se = sd/sqrt(N)) 


    #Then I merge it with my original data 
totalglu<-merge(data2,cdata) 

#Then I make the ggplot 
p<-ggplot(data=totalglu, aes(x = factor(OGTT), y = Glucose, group = StudyID, color=StudyID)) + 
    geom_line() + 
    facet_grid(End.start ~Treatment)+ 
    stat_summary(aes(group = Treatment), geom = "point", fun.y = mean, shape = 16, size = 2) + 
    theme(legend.position="none") + 
    labs(x = "OGTT time points (min)",y= "Glucose (mmol/l)")+ 
    geom_errorbar(aes(ymin=mean-se,ymax=mean+se), width=.1, colour="black") 
p 

My plot with flying errorbars for a some of the points

+0

Есть ли причина, чтобы не использовать 'mean_cl_normal', чтобы среднее значение и CI в одном кадре вместо этого? Также: можете ли вы опубликовать данные, которые вызывают проблему (т. Е. У меня нет 'data2', поэтому вы не можете делать свои сюжеты). –

+0

К сожалению, я пропустил это раньше: похоже, что бары ошибок находятся в одном и том же месте в верхнем и нижнем рядах сетки. Наиболее вероятная причина заключается в том, что огранка работает по-разному в 'stat_summary' и' geom_errorbar' (или в вызове ddply) –

ответ

0

Похоже, что вы не используете End.start при расчете баров, но в настоящее время используется stat_summary из огранке.

Try:

cdata <- ddply(data2, c("OGTT","Treatment","End.start"), summarise, 
       N = sum(!is.na(Glucose)), 
       mean = mean(Glucose, na.rm=TRUE), 
       sd = sd(Glucose, na.rm=TRUE), 
       se = sd/sqrt(N)) 


    #Then I merge it with my original data 
totalglu<-merge(data2,cdata) 

#Then I make the ggplot 
p<-ggplot(data=totalglu, aes(x = factor(OGTT), y = Glucose, group = StudyID, color=StudyID)) + 
    geom_line() + 
    facet_grid(End.start ~Treatment)+ 
    stat_summary(aes(group = Treatment), geom = "point", fun.y = mean, shape = 16, size = 2) + 
    theme(legend.position="none") + 
    labs(x = "OGTT time points (min)",y= "Glucose (mmol/l)")+ 
    geom_errorbar(aes(ymin=mean-se,ymax=mean+se), width=.1, colour="black") 
p 

Хотя, без фактических исходных данных, я не совсем уверен, что data2 выглядит, или как ddply влияет на вещи. Вместо этого, я мог бы предложить пропуск делает cdata в целом, и только с помощью:

ggplot(data=totalglu, aes(x = factor(OGTT), y = Glucose, group = StudyID, color=StudyID)) + 
    geom_line() + 
    facet_grid(End.start ~Treatment)+ 
    stat_summary(aes(group = Treatment), fun.data = mean_cl_normal) + 
    theme(legend.position="none") + 
    labs(x = "OGTT time points (min)",y= "Glucose (mmol/l)") 
+0

Большое вам спасибо! :) Это было так полезно! Как вы сказали, моя проблема заключалась в том, что я забыл использовать End.start при расчете баров! Задача решена! :) Спасибо! –

Смежные вопросы