2010-08-03 5 views
2

인사말,R 및 스택 영역 차트?

내가 좋아하는 뭔가를 닮은 세 개의 TS 변수가 다음

data <- read.csv(...) 
dataA = zoo(data$valueA, data$date) 
dataB = zoo(data$valueB, data$date) 
dataC = zoo(data$valueC, data$date) 

days = seq(start(dataA), end(dataA), "day") 

dataAts = na.locf(merge(dataA, zoo(,days))) 
dataBts = na.locf(merge(dataB, zoo(,days))) 
dataCts = na.locf(merge(dataC, zoo(,days))) 

은 내가 plotrix를 사용하려고했습니다 R.의 누적 영역 차트로 dataAts, dataBts 및 dataCts을 그릴 필요 ,하지만 나는 적절한 형태로 매트릭스를 얻기에 충분하지 못하다.

dataAts, dataBts 및 dataCts가 아직 누적되지 않았으므로 올바른 순서로 세 개의 그림을 그리는 것만이 아닙니다 (단, 이들을 합산하는 방법을 생각해 낼 수있는 경우는 제외). -파리).

아무도 도와 줄 수 있습니까? 사전에

감사합니다 ...

답변

3

어때?

library(zoo) 
library(ggplot2) 

data <- data.frame(date=Sys.Date()+1:30, 
    valueA=runif(30), valueB=runif(30), valueC=runif(30)) 

dataA = zoo(data$valueA, data$date) 
dataB = zoo(data$valueB, data$date) 
dataC = zoo(data$valueC, data$date) 

days = seq(start(dataA), end(dataA), "day") 

dataAts = na.locf(merge(dataA, zoo(,days))) 
dataBts = na.locf(merge(dataB, zoo(,days))) 
dataCts = na.locf(merge(dataC, zoo(,days))) 

dataABCts <- merge(dataAts,dataBts,dataCts) 

# EDIT: Change labels here 
colnames(dataABCts) <- c("stock1","stock2","stock3") 

stacked <- lapply(colnames(dataABCts),function(i) { 
    data.frame(date=index(dataABCts),values=dataABCts[,i],ind=i) 
}) 
stacked <- do.call(rbind,stacked) 

ggplot(stacked, aes(x=date, y=values)) + geom_area(aes(fill=ind)) 
+0

우수 !!! 현상금의 가치가있는 가치. 몇 가지 질문 : 오른쪽에 나타나는 레이블을 어떻게 변경합니까? 각 다각형의 상단에 어두운 색 테두리가있는 선을 그리는 방법이 있습니까? 다시 한번 감사드립니다. –

+1

레이블은 단순히'dataABCts' 객체의 열 이름입니다. 마찬가지로 축 레이블과 범례 헤더는'stacked' 객체의 열 이름입니다. "어두운 색 테두리"가 무슨 뜻인지 잘 모르겠지만, 아마도 ggplot (stacked, aes (x = date, y = values)) + geom_area (aes (fill = ind), color = "black")'? –

+0

또한 시도해보십시오 :'melt (data, measure = paste ("value", c ("A", "B", "C"), sep = ""))' – apeescape

1

내가 시계열 객체에 매우 능숙하지 않다,하지만 당신은 데이터 프레임으로 데이터를 얻을 수 있다면, 내가 도움이 될 수 있습니다 죄송합니다.

다음과 같은 열이있는 데이터 프레임이 가정 : Date 날짜를 포함

Date Data Value 

, Data는 C 레이블을 통해을 포함, 그리고 Value는 값이 포함되어 있습니다. 그 시점에서, ggplot2 코드는 내가 멋지게 영역을 구분 color = "black"geom_area()에 통과 생각

library(ggplot2) 
ggplot(df, aes(Date, Value, fill = Data))+ 
    geom_area() 

것,하지만 그건 당신의 미적 취향에 달려 있습니다.