Programing/R- programming

R ggplot 누적분포 및 계단형 그래프 그리기

sosal 2015. 10. 11. 18:40
반응형


/*

 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개의 그래프가 일치하지 않은데, 제가 샘플링을 중간에 다시하고 그림을 그려서 그렇습니다 ^^