2013-02-26 5 views
0

Я пытался создать простой линейный график средств и взаимодействий. У меня есть DV (время чтения) по оси y, один коэффициент (длина) по оси x, а другой - как переменная (позиция) группировки.соединительные линии между средствами факторов в ggplot2

Синтаксис, который я использовал ниже. Данные, изображенные как одиночные точки на линии для каждого из двух условий длины, но не связаны с линиями между двумя условиями длины. Что мне не хватает в синтаксисе?

Я использую R i386 2.15.2 и обновленный ggplot2 на прошлой неделе.

Вот воспроизводимый пример

SubjectID <- c(101,101,101,101,101,101,101,101,102,102,102,102,102,102,102,102, 
     201,201,201,201,201,201,201,201,202,202,202,202,202,202,202,202) 
Group <- c("PWA","PWA","PWA","PWA","PWA","PWA","PWA","PWA","PWA","PWA","PWA", 
     "PWA","PWA","PWA","PWA","PWA","Control","Control","Control", 
     "Control","Control","Control","Control","Control","Control", 
     "Control","Control","Control","Control","Control","Control", 
     "Control") 
Length <- c(1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2) 
Pos <- c(1,1,2,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1,2,2) 
ReadT <- c(6.7,7.6,6.4,7.9,5.4,6.4,6.3,7.4,6.9,7.2,6.7,7.4,5.7,6.1,6.5,7.8, 
     6.1,5.7,4.9,6.1,4.7,6.5,6.1,6.2,6.9,5.9,4.8,6.5,4.6,6.3,6.7,6.6) 

data <- data.frame (SubjectID, Group,Length,Pos,ReadT) 
data$Length <- factor(data$Length, order = TRUE, 
     levels = c(1,2), 
     labels = c("Length 1", "Length 2")) 
data$Pos <- factor(data$Pos, order = TRUE, 
     levels = c(1,2), 
     labels = c("Position 1", "Position 2")) 

qplot(Length, data=data, ReadT, geom=c("point", "line"), 
    stat="summary", fun.y=mean, group=Pos, colour=Pos, 
    facets = ~Group) 
+6

Просьба представить [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) - добавить образцы данных, предпочтительно используя dput() –

ответ

0

Я не думаю, что вы воспроизвели несогласованность, но ваши вопросы в части омрачены пытаются уплотнить все в одном qplot вызова.

Ваш x переменная Length является фактором, поэтому ggplot будет разумно учитывая Length 1 и Length 2 быть независимыми, и не будет соединять линии.

Во-вторых, вы не сможете использовать stat_summary, чтобы суммировать ваши значения x, не заставляя их быть фактором (и, следовательно, независимым).

Мне легче всего предварять данные, а не полагаться на ggplot.

например

library(plyr) 
data.means <- ddply(data, .(Group, Pos, Length), summarize, ReadT = mean(ReadT)) 

Затем построить график, используя ggplot не qplot, чтобы дать вам гибкость (и прозрачность) требуется.

Хитрость, чтобы получить линии Подключенный рассматривать x числовой в вызове geom_line см here, например

ggplot(data.means, aes(x= Length, y= ReadT, colour = Pos)) + 
geom_point() + 
geom_line(aes(x=as.numeric(Length))) + 
facet_grid(~Group) 

Если вы настаивали на использовании исходных данных, и stat_xxxx функции, вы могли бы также повторите это с использованием stat_smooth для оценки средств (которые будут содержать x, классифицированных как числовые)

ggplot(data, aes(x = Length, y= ReadT, colour = Pos)) + 
stat_summary(fun.y = 'mean', geom = 'point')+ 
stat_smooth(method = 'lm', aes(x=as.numeric(Length)), se = FALSE) + 
facet_grid(~Group) 
+0

Вы абсолютно правильно, я не смог повторить одно время, когда это сработало - это останется загадкой. Я отредактировал эту часть из названия и вопроса. Спасибо за ваши очень полезные комментарии! Я также видел еще одну публикацию, которая касается той же проблемы (которую я пропустил ранее), которая указывает на другой пакет, который может быть полезен здесь: см. Ggplot2: строка, соединяющая средства сгруппированных данных – user2112401

+0

В первом коде ggplot должно быть 3 круглые скобки mafter ..numeric (Длина – user2112401

+0

Действительно, ... исправлено. – mnel