정보

    • 업무명     : 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

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기