График спагетти в R с повторными измерениями

Я хотел бы реализовать сюжет спагетти в R, чтобы визуализировать различия между двумя условиями для каждого отдельного участника. Я вычислил повторные измерения ANOVA с факторами КРИТИЧНОСТИ (критическая, некритическая) и ЛАТЕРАЛЬНОСТЬ (ипсилатеральная, контралатеральная). Мои данные выглядят следующим образом и их можно найти здесь:

    subject cond       power      laterality      criticality
1   P02   CL_CRIT       -362.7    contralateral   crit
2   P03   CL_CRIT       -186.8    contralateral   crit
3   P13   CL_CRIT       -314.6    contralateral   crit
4   P15   CL_CRIT       -353.3    contralateral   crit
5   P17   CL_CRIT       -457.8    contralateral   crit
6   P18   CL_CRIT       -219.3    contralateral   crit
7   P19   CL_CRIT       -124.0    contralateral   crit
8   P25   CL_CRIT       -329.5    contralateral   crit
9   P27   CL_CRIT       -286.9    contralateral   crit
37  P02   CL_NCRIT      -28.6     contralateral   non-critical
38  P03   CL_NCRIT      -269.3    contralateral   non-critical
39  P13   CL_NCRIT      -363.8    contralateral   non-critical
40  P15   CL_NCRIT      -255.1    contralateral   non-critical

Ссылка на данные

С помощью следующего кода я могу построить отдельные точки данных всех участников:

### plot single values
stim.group <- mu_power
pd <- position_dodge(0.3) # move data .03 to the left and right
pp <- ggplot(stim.group, aes(x=critical, y=power, colour=laterality)) +
geom_point(position=pd) + ylab("mu power")
pp

Теперь мне нужен график, на котором, отдельно для ипсилатерального и контралатерального уровней, связаны критические и некритические точки данных каждого отдельного участника. Вот пример того, к чему я стремлюсь: SAMPLE

Я довольно долго искал в Интернете, но не нашел никакого решения.


person Matthias    schedule 16.06.2017    source источник
comment
Этот тип диаграммы также называется диаграмма рельефа или диаграмма наклона.   -  person Uwe    schedule 16.06.2017


Ответы (2)


Вот решение:

df <- read.table("path/to/your/data")
df$sub_lat <- paste(df$subject, df$laterality)

ggplot(df, aes(x=critical, y=power)) + 
  geom_point(aes(group = sub_lat, color = laterality)) +
  geom_line(aes(group = sub_lat, color = laterality)) +
  xlab("critical") +
  ylab("sensorimotor_mu_nogo power")

В результате получается этот график: макаронный сюжет

Я надеюсь, что это то, что вам нужно/хочется

person jkrainer    schedule 16.06.2017
comment
Эй jkrainer, большое спасибо за ваш очень быстрый ответ! Я был немного шокирован тем, как быстро я получил ответ :-). К сожалению, ваше решение не работает для меня, когда я пробую его, появляется следующее изображение: Новый сюжет. - person Matthias; 16.06.2017
comment
привет, Матиас, просмотрев данные в вашем дропбоксе, я увидел, что точки сгруппированы не только по теме, но и по комбинации темы и латеральности. Я надеюсь, что это прямо сейчас. Я отредактировал свой ответ выше :) - person jkrainer; 16.06.2017
comment
Привет jkrainer, ты сделал мой день - большое спасибо! В вашем коде нужно просто заменить sub_cond на sub_lat, и тогда у меня все работает! Большое спасибо :-). - person Matthias; 16.06.2017

Также см. это:

ggplot()+
  geom_line(data = df, aes(x = criticality, y = power,
                           group = subject, color = laterality))
person AK88    schedule 16.06.2017