[R] R을 이용한 통계 분석 및 데이터 시각화 : 선 그래프

 정보

  • 업무명     : R을 이용한 통계 분석 및 데이터 시각화 : 선 그래프

  • 작성자     : 박진만

  • 작성일     : 2020-04-04

  • 설   명      :

  • 수정이력 :

 

 내용

[개요]

  • R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분석 환경입니다. 

  • 통계 분석 기능으로 통계 검정, 선형 회귀 분석, 시계열 데이터 분석, 클러스터링 등을 지원하고 있습니다.

  • 또한 최신 논문에서 발표된 같은 새로운 기술도 R로 구현되는 경우가 많습니다.

  • 특히 시각화 기능으로 히스토그램, 막대 그래프, 선 그래프, 산포도, 나무 모양 그림이나 히트맵 등 기본적인 그래프가 기본으로 지원하고 있습니다.

  • 또한 ggplot2 등의 패키지를 사용하여 더 높은 수준의 그림을 가시화할 수 있습니다.

 

 

[특징]

  • 데이터를 이해하기 위해서 통계 분석 및 데이터 시각화가 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어

     

[기능]

  • 데이터형 소개

 

[활용 자료]

  • 없음

 

[자료 처리 방안 및 활용 분석 기법]

  • 없음

 

[사용법]

  • 소스 코드 예시 참조

 

[사용 OS]

  • Windows 10

 

[사용 언어]

  • R v3.6.2

  • R Studio v1.2.5033

 

 소스 코드

[선 그래프]

  • 선을 그릴 때 lines함수를 이용하면 편리하다.

  • plot함수를 이용하여 레이아웃을 그리고, lines함수에서 선 그래프를 그린다. 먼저 다음과 같은 샘플 데이터를 준비한다.

x <- data.frame(
    ColdTreat = c(2.2, 2.1, 2.0, 2.0, 1.8, 1.9, 1.8, 1.5),
    WarmTreat = c(2.1, 2.2, 2.3, 2.5, 2.6, 2.6, 2.8, 3.0),
    Control   = c(2.0, 2.1, 2.0, 2.2, 2.1, 2.2, 2.0, 2.1)
)
head(x)
##   ColdTreat WarmTreat Control
## 1       2.2       2.1     2.0
## 2       2.1       2.2     2.1
## 3       2.0       2.3     2.0
## 4       2.0       2.5     2.2
## 5       1.8       2.6     2.1
## 6       1.9       2.6     2.2

 

  • 그리고 그래프를 그린다.

xrange <- 1:nrow(x)
plot(0, 0, type = "n", xlim = range(xrange), ylim = range(0, x), xlab = "time", ylab = "weight")

cols <- c("black", "red", "blue")
ltys <- c("solid", "dotted", "dashed")


for (i in 1:ncol(x)) {
    lines(xrange, x[, i], col = cols[i], lty = ltys[i])
}
legend("bottomleft", legend = colnames(x), col = cols, lty = ltys)

 

[오류바 정의]

  • 선 그래프를 그릴 때 각 점에서 표준 편차를 계산할 수 있다.

  • 위 표준 편차를 오류 바로 평균 선 그래프로 쓰고 추가 할 수 있다.

  • 아래의 코드는 ColdTreat, WarmTreat, Control의 3 군 각각 3 개의 복제 실험이 행해졌다고 가정하고, 선 및 오류 막대를 그리는 방법을 보여준다.

cold.treat <- data.frame(
    bio.rep.1 = c(2.2, 2.1, 2.0, 2.0, 1.8, 1.9, 1.8, 1.5),
    bio.rep.2 = c(2.1, 2.1, 1.9, 1.8, 1.7, 1.7, 1.5, 1.4),
    bio.rep.3 = c(2.2, 2.0, 1.9, 1.9, 1.8, 1.7, 1.6, 1.5)
)
cold.treat <- data.frame(
    bio.rep.1 = c(2.2, 2.1, 2.0, 2.0, 1.8, 1.9, 1.8, 1.5),
    bio.rep.2 = c(2.1, 2.1, 1.9, 1.8, 1.7, 1.7, 1.5, 1.4),
    bio.rep.3 = c(2.2, 2.0, 1.9, 1.9, 1.8, 1.7, 1.6, 1.5)
)
warm.treat <- data.frame(
    bio.rep.1 = c(2.1, 2.2, 2.3, 2.5, 2.6, 2.6, 2.8, 3.0),
    bio.rep.2 = c(2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 3.1),
    bio.rep.3 = c(2.2, 2.3, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0)
)
control <- data.frame(
    bio.rep.1 = c(2.0, 2.1, 2.0, 2.2, 2.1, 2.2, 2.0, 2.1),
    bio.rep.2 = c(2.2, 2.2, 2.1, 2.2, 2.1, 2.0, 2.1, 2.2),
    bio.rep.3 = c(2.1, 2.1, 2.0, 2.1, 2.2, 2.1, 2.0, 2.1)
)

 

  • 평균과 표준 편차를 계산한다.

x.mean <- data.frame(
    ColdTreat = apply(cold.treat, 1, mean),
    WarmTreat = apply(warm.treat, 1, mean),
    Control   = apply(control, 1, mean)
)
x.sd <- data.frame(
    ColdTreat = apply(cold.treat, 1, sd),
    WarmTreat = apply(warm.treat, 1, sd),
    Control   = apply(control, 1, sd)
)

 

  • 평균과 표준 편차를 계산 한 후 평균값으로 선 그래프를 그린다. 이어 arrow함수에서 오류 막대를 추가한다.

xrange <- 1:nrow(x.mean)
plot(0, 0, type = "n", xlim = range(xrange), ylim = range(0, c(x.mean + x.sd, x.mean - x.sd)), xlab = "time", ylab = "weight")

cols <- c("black", "red", "blue")
ltys <- c("solid", "dotted", "dashed")


for (i in 1:ncol(x.mean)) {
    lines(xrange, x.mean[, i], col = cols[i], lty = ltys[i])
    arrows(xrange, x.mean[, i] - x.sd[, i], xrange, x.mean[, i] + x.sd[, i], code = 3, lwd = 1, col = cols[i], angle = 90, length = 0.05)
}


legend("bottomleft", legend = colnames(x.mean), col = cols, lty = ltys)

 

[속성 정의]

  • lines함수를 이용하여 꺾은 선 그래프를 그릴 때 선의 색, 두께 및 종류 등 col및 버튼 lty등의 옵션을 지정할 수 있다.

plot(c(0,0), xlim=c(0,10), ylim = c(0,8), type = "n")

text(5, 1, 'lwd = 1, lty = "solid", col="black"')
lines(c(1, 10), c(1, 1), lwd = 1 , lty = "solid", col = "black")

text(5, 2, 'lwd = 2, lty = "dashed", col = "red"')
lines(c(1, 10), c(2, 2), lwd = 2, lty = "dashed", col = "red")

text(5, 3, 'lwd = 3, lty = "longdash", col = "green"')
lines(c(1, 10), c(3, 3), lwd = 3, lty = "longdash", col = "green")

text(5, 4, 'lwd = 4, lty = "solid", col = "grey"')
lines(c(1, 10), c(4, 4), lwd = 4, lty = "solid", col = "blue")

text(5, 5, 'lwd = 3, lty = "dotdash", col = "blue"')
lines(c(1, 10), c(5, 5), lwd = 3, lty = "dotdash", col = "magenta")

text(5, 6, 'lwd = 2, lty = "twodash", col = "yellow"')
lines(c(1, 10), c(6, 6), lwd = 2, lty = "twodash", col = "yellow")

text(5, 7, 'lwd = 1, lty = "dotted", col = "magenta"')
lines(c(1, 10), c(7, 7), lwd = 1, lty = "dotted", col = "grey")

 

[다음글]

 

[R] R을 이용한 통계 분석 및 데이터 시각화 : RColorBrewer

정보 업무명 : R을 이용한 통계 분석 및 데이터 시각화 : RColorBrewer 작성자 : 박진만 작성일 : 2020-04-05 설 명 : 수정이력 : 내용 [개요] R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통..

shlee1990.tistory.com

 

[이전글]

 

[R] R을 이용한 통계 분석 및 데이터 시각화 : 이중축

정보 업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 이중축 작성자 : 박진만 작성일 : 2020-04-03 설 명 : 수정이력 : 내용 [개요] R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분..

shlee1990.tistory.com

 

 

 참고 문헌

[논문]

  • 없음

[보고서]

  • 없음

[URL]

  • 없음

 

 문의사항

[기상학/프로그래밍 언어]

  • sangho.lee.1990@gmail.com

[해양학/천문학/빅데이터]

  • saimang0804@gmail.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음