Постройте средние значения и планки погрешностей для набора данных с использованием ggplot2 в R

У меня есть следующие данные:

a_ray<-c(12,13,14,15,16,16,14,14,15,16,16,16,23,14)
b_ray<-c(23,24,25,21,23,23,23,26,27,25,24,25,24,24)
c_ray<-c(45,32,34,36,48,32,31,34,49,50,58,56,58,32)
group<-c(0.12,0.28,0.29,0.36,0.15,0.65,0.54,0.28,0.08,0.14,0.03,0.06,0.09,0.25)
mydata<-cbind(a_ray,b_ray,c_ray,group)

Я хочу построить средние значения и планки погрешностей для этого набора данных. Метки оси x: a_ray, b_ray и c_ray, а ось y - это значение этих лучей (называемое «значением луча»), а также в моих данных содержится переменная «Группа», я хочу нарисуйте две линии на одном графике, одна линия соответствует «Группе‹0,2», а другая линия соответствует «Группе>=0,2», ожидаемый график выглядит следующим образом:

введите здесь описание изображения


person lightsnail    schedule 24.02.2016    source источник
comment
@scoa Я не знаю, с чего начать, я искал в Интернете час, но до сих пор не могу понять. Я считаю, что структура моих данных отличается от других, три мои группы находятся в разных столбцах, и этот веб-сайт кажется полезным, но я застрял на первом этапе summarySE. cookbook-r.com/Graphs/Plotting_means_and_error_bars_(ggplot2) мне нужно кто-то, чтобы направить меня, чтобы начать. Благодарю вас!   -  person lightsnail    schedule 24.02.2016
comment
Вот что я бы сделал: перевел столбец вашей группы с числового на факторный или символьный с двумя вашими категориями. Затем см. здесь: stackoverflow.com/questions/2185252/, чтобы преобразовать ваши данные в полную форму. Для этого я бы использовал tidyr::gather(mydata,key,value,-group). Наконец, вычислите среднее значение и стандартную ошибку, прежде чем строить график с помощью ggplot.   -  person scoa    schedule 24.02.2016
comment
для последнего шага вы можете увидеть здесь, например: stackoverflow.com/questions/32319067/   -  person scoa    schedule 24.02.2016
comment
Это кажется полезным, позвольте мне сначала попробовать, спасибо, @scoa   -  person lightsnail    schedule 24.02.2016
comment
@scoa Наконец-то я разобрался! Огромное Вам спасибо за искреннюю помощь!!! Я приложу свой код в свой ответ, чтобы поделиться с другими.   -  person lightsnail    schedule 24.02.2016


Ответы (1)


С помощью @scoa, наконец, у меня получилось!

Мой код выглядит следующим образом:

mydata<-as.data.frame(mydata)
mydata$groupvar<-cut(mydata$group,c(0,0.2,1))

mydata<-mydata[,-4]

library("reshape")
changedata <- melt(mydata,id=c("groupvar"),variable_name="Ray")

library("plyr")
arrangedata <- ddply(changedata, c("groupvar","Ray"), summarise,
               N    = length(value),
               mean = mean(value),
               sd   = sd(value),
               se   = sd / sqrt(N))

pd <- position_dodge(0.1)  #The errorbars overlapped, so use position_dodge to move them horizontally
ggplot(arrangedata, aes(x=Ray, y=mean, colour=groupvar,group=groupvar)) + 
    geom_errorbar(aes(ymin=mean-se, ymax=mean+se), width=.1,position=pd) +
    geom_line(position=pd) +
    geom_point(position=pd)+
    ylab("Ray Value") +
    xlab("Ray type")+
    scale_colour_hue(name="Group type", 
                     breaks=c("(0,0.2]", "(0.2,1]"))

А моя картина выглядит следующим образом: введите здесь описание изображения

person lightsnail    schedule 24.02.2016