2012-04-03 1 views
6

Используя следующую имитацию временных рядов:Грановитая временных рядов со средним профилем в ggplot2

n=70 
m1 = matrix(rnorm(n), ncol=7) 
m2 = matrix(rnorm(n, 0,4), ncol=7) 
d = data.frame(rbind(m1,m2), cl=rep(c(1,2), each=5)) 

(первые 7 столбцов представляют момент времени, последний столбец Класс)

Можно ли построить граненый временные ряды, которые включают среднюю кривую на каждом участке, используя ggplot2?

Результаты должны выглядеть следующим образом: plot with mean curves

ответ

12

Это может быть не самый красивый код, но я считаю, что это получает вас, что вы ищете,

n=70 
m1 = matrix(rnorm(n), ncol=7) 
m2 = matrix(rnorm(n, 0,4), ncol=7) 
d = data.frame(rbind(m1,m2), cl=rep(c(1,2), each=5)) 

d <- cbind(paste("d", 1:NROW(d), sep = ""), d) 
names(d)[1] <- "id.var" 

library(reshape) 
longDF <- melt(d, id=c("cl", "id.var")) 
library(ggplot2) 

p <- ggplot(data = longDF, aes(x = variable, y = value, group = id.var)) 
p + geom_line() + stat_smooth(aes(group = 1), method = "lm", 
se = FALSE, colour="red") + facet_grid(cl ~ .) 

Пожалуйста, не стесняйтесь для улучшения моего кода.

spaghetti plot with stat_smooth and facet_grid

+0

Большое вам спасибо! – user680111

+2

Мое удовольствие, я знаю, как это чувствуется, когда вы застряли. Вы должны попробовать изменить 'se = FALSE' на' se = TRUE', я часто нахожу эту информацию весьма информативной. –

+0

@ Эрик Мне было интересно, можете ли вы предоставить некоторые подробности о том, как longDF был создан. Я бы предположил, что «расплав» из «reshape» был использован ... –

 Смежные вопросы

  • Нет связанных вопросов^_^