2015-06-14 2 views
2

Как я могу получить ggplot производить что-то подобное, как Examplegeom_vlines несколько vlines на участке

library(ggplot2) 
library(reshape2) 
library(ecp) 

synthetic_control.data <- read.table("/path/synthetic_control.data.txt", quote="\"", comment.char="") 
n <- 2 

s <- sample(1:100, n) 
idx <- c(s, 100+s, 200+s, 300+s, 400+s, 500+s) 
sample2 <- synthetic_control.data[idx,] 
df = as.data.frame(t(as.matrix(sample2))) 

#calculate the change points 
changeP <- e.divisive(as.matrix(df[1]), k=8, R = 400, alpha = 2, min.size = 3) 
changeP = changeP$estimates 
changeP = changeP[-c(1,length(changeP))] 

changePoints = data.frame(changeP,variable=colnames(df)[1]) 
for(series in 2:ncol(df)){ 
    changeP <- e.divisive(as.matrix(df[series]), k=8, R = 400, alpha = 2, min.size = 3) 
    changeP = changeP$estimates 
    changeP = changeP[-c(1,length(changeP))] 
    changePoints = rbind(changePoints, data.frame(changeP,variable=colnames(df)[2])) 
} 

это интересная часть о сюжете:

ДФ $ ID = 1: nrow (DF) dfMelt < - reshape2 :: расплав (df, id.vars = "id") p = ggplot (dfMelt, aes (x = id, y = значение)) + geom_line (color = "steelblue") + facet_grid (переменная ~., scales = 'free_y') p + geom_vline (aes (xintercept = changeP), data = changePoints, linetype = 'dashed')

Пока что мой результат: https://www.dropbox.com/s/mysadkruo946oox/changePoint.pdf, что означает, что что-то не так с моим массивом, переданным в geom_vlines.

Не могли бы вы указать мне в правильном направлении, почему я только получаю vlines на первых 2 участках?

+0

Я обновил этот вопрос –

+0

при установке R пакета ECP должна быть возможность просто копировать/вставить код. –

+0

Я обновил вопрос - часть для ecp работает сейчас, и я получаю несколько простых строк, но только в частях графиков. –

ответ

0

Это решение:

library(ggplot2) 
library(reshape2) 
library(ecp) 

synthetic_control.data <- read.table("/Users/geoHeil/Dropbox/6.Semester/BachelorThesis/rResearch/data/synthetic_control.data.txt", quote="\"", comment.char="") 
n <- 2 

s <- sample(1:100, n) 
idx <- c(s, 100+s, 200+s, 300+s, 400+s, 500+s) 
sample2 <- synthetic_control.data[idx,] 
df = as.data.frame(t(as.matrix(sample2))) 

#calculate the change points 
changeP <- e.divisive(as.matrix(df[1]), k=8, R = 400, alpha = 2, min.size = 3) 
changeP = changeP$estimates 
changeP = changeP[-c(1,length(changeP))] 

changePoints = data.frame(changeP,variable=colnames(df)[1]) 
for(series in 2:ncol(df)){ 
    changeP <- e.divisive(as.matrix(df[series]), k=8, R = 400, alpha = 2, min.size = 3) 
    changeP = changeP$estimates 
    changeP = changeP[-c(1,length(changeP))] 
    changePoints = rbind(changePoints, data.frame(changeP,variable=colnames(df)[series])) 
} 

# plot 
df$id = 1:nrow(df) 
dfMelt <- reshape2::melt(df, id.vars = "id") 
p = ggplot(dfMelt,aes(x=id,y=value))+geom_line(color = "steelblue")+ facet_grid(variable ~ ., scales = 'free_y') 
p + geom_vline(aes(xintercept=changeP), data=changePoints, linetype='dashed', colour='darkgreen') 
+0

, так как результат не является тем, что я ожидал бы: http: // stackoverflow .com/вопросы/30834455/сюжетно-оф-разладки-детектирования с использованием-р-ECP-пакет-делает-не-работы –

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