2013-02-04 1 views
1
dput(x) 
structure(list(Date = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 3L, 3L, 3L, 3L), .Label = c("1/1/2012", "2/1/2012", "3/1/2012" 
), class = "factor"), Server = structure(c(1L, 2L, 3L, 4L, 1L, 
2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = c("A", "B", "C", "D"), class = "factor"), 
    Storage = c(10000L, 20000L, 30000L, 15000L, 15000L, 25000L, 
    35000L, 15700L, 16000L, 27000L, 37000L, 16700L)), .Names = c("Date", 
"Server", "Storage"), class = "data.frame", row.names = c(NA, 
-12L)) 

스택 막대 x = Date, y = Storage를 만들고 싶습니다. 총 저장 공간을 기준으로 선형 선을 배치합니다.ggplot2의 집계 데이터를 기준으로 선형 선을 배치합니다.

나는이 ggplot 라인 올라와있다 :

그것은 좀 직선을 제외한 작동
ggplot(x, aes(x=Date, y=Storage)) + geom_bar(aes(x=Date,y=Storage,fill=Server), stat="identity", position="stack") + geom_smooth(aes(group=1),method="lm", size=2, color="red") 

은 날짜 프레임 X에서 주어진 날짜에 대한 총 저장 기반으로하지 않습니다. 이 작업을 수행하는 쉬운 방법이 있습니까?

답변

1

종종 가장 쉬운 방법은 ggplot2 외부의 값을 계산하는 것입니다.

dd = as.data.frame(tapply(x$Storage, x$Date, sum)) 
dd$Date = rownames(dd) 
colnames(dd)[1] = "Storage" 

는 다음 geom_smooth 호출을 추가하지만 데이터 지정 :

ggplot(x, aes(x=Date, y=Storage)) + 
    geom_bar(aes(x=Date,y=Storage, fill=Server), stat="identity", position="stack") + 
    geom_smooth(data = dd, aes(x=Date, y=Storage, group=1),method="lm") 
을 따라서 합계를 계산
관련 문제