2010-08-16 4 views
5

나는 (내가 data.frame 여기를 게시 한) 시계열 데이터를 가지고 :바 그래프는 ggplot을 사용하여 월별로 합계가됩니까?

x <- structure(list(date = structure(c(1264572000, 1266202800, 1277362800, 
1277456400, 1277859600, 1278032400, 1260370800, 1260892800, 1262624400, 
1262707200), class = c("POSIXt", "POSIXct"), tzone = ""), data = c(-0.00183760994446658, 
0.00089738603087497, 0.000423513598318936, 0, -0.00216496690393131, 
-0.00434836817931339, -0.0224199153445617, 0.000583823085470003, 
0.000353088613905206, 0.000470295331234771)), .Names = c("date", 
"data"), row.names = c("1", "2", "3", 
"4", "5", "6", "7", "8", "9", "10" 
), class = "data.frame") 

개월 당 총 가치를 보여줄 것 ggplot에 막대 그래프로이 음모하는 가장 좋은 방법 (무엇 달 이름은 텍스트로)?

나는 한 달 필드를 추가하여이 작업을 수동으로 할 수

: 다음

x$month <- format(x$date, format="%B") 
ddply(x, .(month), function(x) sum(x[, "data"])) 

을 독립적으로이 음모를 꾸미고 있지만 개월이 방법 (? 내가 정렬 된 요소를 만들 필요가 있다고 가정)를 사용하여 올바르게 정렬되지 않습니다 나는 또한 ggplot으로 "더 쉬운"방법이 있다고 추정하고 있습니다. 나는 더에 의해 오전

답변

12

는 시계열 데이터와 전문가를 의미하지만,이 코드는 나를 위해 일한 : 내 제안을

#The binning by month, saving as a date 
x$month <- as.Date(cut(x$date, breaks = "month")) 

#Plotting 
p <- ggplot(x, aes(month, data))+ 
    stat_summary(fun.y = sum, geom = "bar") 

#My suggestions for display 
minmax <- max(abs(x$data)) 

p + geom_hline(y = 0)+ 
    scale_x_date(minor = "month")+ 
    ylim(-minmax, minmax) 
    # or more ggplot2 accurately 
    #+coord_cartesian(ylim = c(-minmax, minmax)) 

, 당신은 라인과 제로를 강조 끝과 Y 축이 대칭 각 달의 막대가 각 방향으로 몇 주 연장 되었기 때문에 x 축 보조 눈금 선을 "월"으로 변경했습니다. 이는 데이터가 집계되는 방식에 실제로 의미가 없습니다.

편집 : 물론이 코드의 대부분은 매월 합계를 작성하는 것입니다. 날짜 데이터가 날짜 형식 인 경우 날짜 축척이 축에 대해 자동으로 사용됩니다. 주요 X 휴식과 형식을 변경하려면 형식 문자열이 무엇을 의미하는지에 대한 자세한 내용은 ?strftime를 참조 scale_x_date()

p + scale_x_date(major = "month", format = "%b") 
#or 
p + scale_x_date(major = "month", format = "%B %Y") 

으로 그렇게.

관련 문제