R сюжет Fire Trace - PullRequest
       10

R сюжет Fire Trace

0 голосов
/ 08 июня 2018

Просто начните с R и оцените ваш вклад в этот вопрос.

Я пытаюсь добиться того, чтобы:

  1. Ось Xимеет все значения для «Timestamp» (от 0 до 9)
  2. Ось Y имеет все значения для «NID» (от 0 до 3)
  3. Есть «точки» в координатах («Метка времени», «NID»), где атрибут «Fired» = 1.

Исходные данные имеют следующий формат:

dat = structure(list(TimeStamp = c(0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 
4L), NID = c(0L, 1L, 2L, 3L, 4L, 0L, 1L, 2L, 3L, 4L, 0L, 1L, 
2L, 3L, 4L, 0L, 1L, 2L, 3L, 4L, 0L, 1L, 2L, 3L, 4L), NumberSynapsesTotal = c(2L, 
2L, 3L, 2L, 4L, 2L, 2L, 3L, 2L, 4L, 2L, 2L, 3L, 2L, 4L, 2L, 2L, 
3L, 2L, 4L, 2L, 2L, 3L, 2L, 4L), NumberActiveSynapses = c(1L, 
2L, 1L, 2L, 3L, 1L, 2L, 1L, 1L, 0L, 1L, 2L, 1L, 1L, 0L, 1L, 2L, 
1L, 1L, 0L, 1L, 0L, 0L, 1L, 0L), Fires = c(1L, 1L, 1L, 1L, 0L, 
1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 
0L, 1L, 0L, 0L)), row.names = c(NA, 25L), class = "data.frame")

Я пытался применить фильтр,но он показывает подмножество данных для этих «идентификаторов», где есть значение 1 для атрибута «Запущено» (не все значения для осей):

dat %>%
filter(dat$Fires == 1) %>%
ggplot(aes(x = dat$TimeStamp[dat$Fires == 1], y = dat$NID[dat$Fires == 1])) +
geom_point()

Case 1

В качестве альтернативы, я получаю все существующие значения для атрибутов «Отметка времени» и «NID», используя следующий код:

 plot(dat$TimeStamp, dat$NID,
 xlab = "Time", ylab = "Neuron ID")
 title(main = "Fire Trace Plot")

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

enter image description here

Наконец, из комментария ниже я изменил код так:

ggplot(dat, aes(x = TimeStamp, y = NID) , xlab = "Time", ylab ="Neuron 
ID") +
geom_blank() +
geom_point(dat = filter(dat) +
#title(main = "Fire Trace Plot")
scale_x_continuous(breaks = F_int_time_breaks(1) ) 

Это тот случай, когда я должен построить дваграфики на одной страницемного?Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Код должен выглядеть так (см. Причины в комментариях):

F_int_time_breaks<- function(k) {
  step <- k
  function(y) seq(floor(min(y)), ceiling(max(y)), by = step)       
}

ggplot(dat, aes(x = TimeStamp, y = NID) , xlab = "Time", ylab ="Neuron ID") +
  geom_blank() +
  geom_point(dat = subset(dat, Fires == 1)) +
  #title(main = "Fire Trace Plot")
  scale_x_continuous(breaks = F_int_time_breaks(1) ) 
0 голосов
/ 08 июня 2018

При ggplot2 никогда не используйте data$ внутри aes(), просто используйте имена столбцов.Точно так же функции dplyr, такие как filter, не должны использоваться с data$ - они знают, что нужно искать во фрейме данных столбец.

Я думаю, что вы хотите построить ggplot сполные данные, поэтому оси устанавливаются так, чтобы охватить полные данные (мы форсируем это, добавляя слой geom_blank()), и только точечный слой должен быть поднабором:

# create some sample data (it is nice if you provide this in the question)
dat = expand.grid(Timestamp = 0:9, NID = 0:3)
dat$Fires = ifelse(dat$NID == 2, 1, 0)

# make the plot
ggplot(dat, aes(x = Timestamp, y = NID)) +
    geom_blank() +
    geom_point(dat = filter(dat, Fires == 1))

enter image description here

...