многострочный график с ggvis в R

Я уверен, что это простой вопрос, но я нашел только трудные ответы... Я только начал программировать R, и мне очень нравятся пакеты dplyr и ggvis.. Однако я не мог понять, как объединить несколько линейных графиков в один диаграмма. Я измерял разные образцы с течением времени, и мои данные выглядят примерно так:

   time <-1:10
   m = matrix(c(2, 4, 3, 1, 5, 7),nrow=10,ncol=3,byrow = FALSE)
   colnames(m)<-c("sample1","sample2","sample3")
   mdata <- data.frame(time, m)
   data <-tbl_df(data)

Я знаю, что это работает, чтобы связать слои вместе, но это было бы неудобно для моего набора данных, который содержит МНОЖЕСТВО образцов....

data %>% ggvis() %>% layer_paths(~time,~sample1) %>% layer_paths(~time,~sample2)%>%layer_paths(~time, ~sample3)

Любые предложения, чтобы заставить это работать с ggvis? Я играл с циклом for, но безуспешно. Большое спасибо!


person Laura    schedule 29.10.2015    source источник


Ответы (1)


Ваша проблема в том, что ваши данные должны быть в длинном формате, а не в широком формате, чтобы ggvis мог их построить. Вы можете использовать tidyr для изменения формы. Для дальнейшего ознакомления я рекомендую вам эту шпаргалку о реструктуризации данных.

library(ggvis)
library(tidyr)
library(dplyr)

time <- 1:10
m <-  matrix(c(2, 4, 3, 1, 5, 7), nrow = 10, ncol = 3, byrow = FALSE)
colnames(m) <- c("sample1", "sample2", "sample3")
mdata <- data.frame(time, m)
data <- tbl_df(mdata)


# gather your data into long format
data <- data %>% 
  gather(sample, value, -time)

data %>%
  ggvis(~time, ~value, stroke = ~sample) %>%
  layer_lines()

сюжет

person Thomas K    schedule 01.11.2015
comment
Да, это именно то, что я искал! Большое тебе спасибо!!! Я не знал о разнице между широким и длинным форматом в ggvis! - person Laura; 02.11.2015