R ggplot 누적분포 및 계단형 그래프 그리기
/*
* http://sosal.kr/
* made by so_Sal
*/
R에서 ggplot을 이용하여 그래프를 그려보고, 누적그래프를 그려보고, 계단형 누적그래프를 그려보도록 하겠습니다.
라이브러리 설치 & 불러오기
- 라이브러리 설치
> install.packages("reshape")
> install.packages("reshape2")
> install.packages("ggplot2")
- 라이브러리 불러오기
> library(reshape)
> library(ggplot2)
- 랜덤 샘플링으로 데이터 만들기
day <- 1:12
year2011 <- sample(1:20, size=12, replace=TRUE)
year2012 <- sample(1:40, size=12, replace=TRUE)
year2013 <- sample(30:40, size=12, replace=TRUE)
year2014 <- sample(1:30, size=12, replace=TRUE)
data <- data.frame(day,year2011,year2012,year2013,year2014)
제 마음대로 day라고 했는데, month라고 생각해주세요, 실수했네요 ^^
실제 데이터에서는 원하는 성격의 데이터를 받아주시면 되겠습니다.
melt를 이용하여 column을 id로 n-by-n matrix를 n-by-k로 바꿔줄 수 있습니다.
data_melt<-melt(data, id.vars='day')
위 그림 (후략)
- 그래프 그리기
> ggplot(data_melt, aes(day, value)) + geom_line(aes(colour=variable), size=1.3)
# 누적분포(%) 만들기
> data[,2] <- cumsum(data[,2])/sum(data[,2])
> data[,3] <- cumsum(data[,3])/sum(data[,3])
> data[,4] <- cumsum(data[,4])/sum(data[,4])
> data[,5] <- cumsum(data[,5])/sum(data[,5])
누적(Cumulative) 효과 - 마지막 x=12 값에서 모두 1이 된다.
> data_melt<-melt(data, id.vars='day')
- 누적 그래프 그리기
> ggplot(data_melt, aes(day, value)) + geom_line(aes(colour=variable), size=1.3)
- 계단형으로 누적그래프 그리기
ggplot(data_melt, aes(day, value)) + geom_step(aes(colour=variable), size=1.3)
ggplot 결과로 나온 위 3개의 그래프가 일치하지 않은데, 제가 샘플링을 중간에 다시하고 그림을 그려서 그렇습니다 ^^