Ошибка в построении линейного графика в ggplot2, я думаю, что это как-то неправильно группирует мои группы - PullRequest
0 голосов
/ 19 января 2020

Я просто пытаюсь сделать простой линейный график с двумя условиями: стандартное и отклоняющееся.

Данные в CSV изначально выглядят примерно так:

enter image description here

И да, время должно быть отрицательным. Время - это переменная, которая изменяется от -100 мс (за 100 мс до события) до 1500 мс (1500 мс после события). По сути, я пытаюсь построить график того, как значения (которые я позже назову амплитудой) меняются со временем как для стандартных, так и для отклоняющихся условий. Нечто похожее на это: enter image description here

К сожалению, я получаю вот что:

enter image description here

Вот мой код:

# Libraries
library(ggplot2)

# Plotting
ggplot(data=PupilERP, aes(x=Pt, y=Amplitude, group=Condition)) +
  geom_line() + scale_y_continuous(breaks = seq(-5,15,1)) + scale_x_continuous(breaks = seq(-100,1500,100)) 

Редактировать: Как и просили в комментариях, вот примерные данные после того, как я прошел строку 8 - после этой строки colnames(PupilERP) <- c("Pt","Deviant","Standard")

enter image description here

Кроме того, кто-то еще попросил вывод dput. В этот момент Tt был слишком длинным, чтобы дать вам данные (после строки colnames), даже до 20 точек, поэтому после того, как я произвел ВСЕ изменения формы, после вот фактического вывода dput.

structure(list(Pt = c(13L, 110L, 109L, 108L, 107L, 106L, 105L, 
104L, 103L, 102L, 101L, 99L, 98L, 97L, 96L, 95L, 94L, 93L, 92L, 
91L), Condition = c("Deviant", "Deviant", "Deviant", "Deviant", 
"Deviant", "Deviant", "Deviant", "Deviant", "Deviant", "Deviant", 
"Deviant", "Deviant", "Deviant", "Deviant", "Deviant", "Deviant", 
"Deviant", "Deviant", "Deviant", "Deviant"), Amplitude = c(0.0089, 
-0.0066, -0.0076, 0.0105, 0.0514, 0.111, 0.178, 0.2396, 0.2851, 
0.306, 0.2999, 0.2708, 0.2277, 0.1796, 0.1318, 0.085, 0.0399, 
0.0012, -0.0264, -0.0413)), row.names = c(NA, 20L), class = "data.frame")

1 Ответ

1 голос
/ 20 января 2020

Возможно, проблема возникла при обработке ваших данных. Ваш as.integer вызов в столбце Pt создает неправильные номера. Это потому, что после того, как вы ее транспонировали, переменная Pt стала фактором, поэтому, например, '-11' был интерпретирован как фактор уровня 15 (например) - это, вероятно, в ваших данных привело к дублированию точек (вы заметите, что на вашем графике нет отрицательных чисел).

Чтобы решить эту проблему, перед вызовом as.integer приведите Pt к символьному вектору. Я использовал фиктивные данные для выполнения следующих действий (ваша проблема не была воспроизведена из вышеприведенной части dput):

library(ggplot2)
library(tidyr)

# dummy data
df <- read.csv("test.csv")

df <- t(df)
df <- as.data.frame(df)
df <- df[-1,]
colnames(df) <- c("Pt","Deviant","Standard")
df$Pt <- as.integer(as.character(df$Pt))  # the key change - will read neg. numbers
df <- gather(df, Condition, Amplitude, Deviant:Standard)
df$Amplitude <- as.numeric(df$Amplitude)

ggplot(df, aes(Pt, Amplitude, colour = Condition)) + geom_line()

Надеемся, , что поможет решить некоторые проблемы.

...