정보

    • 업무명     : R을 이용한 통계 분석 및 데이터 시각화 : ggplot2 (geom_line)

    • 작성자     : 박진만

    • 작성일     : 2020-04-06

    • 설   명      :

    • 수정이력 :

     

     내용

    [개요]

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

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

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

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

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

     

     

    [특징]

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

       

    [기능]

    • 데이터형 소개

     

    [활용 자료]

    • 없음

     

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

    • 없음

     

    [사용법]

    • 소스 코드 예시 참조

     

    [사용 OS]

    • Windows 10

     

    [사용 언어]

    • R v3.6.2

    • R Studio v1.2.5033

     

     소스 코드

    [geom_line]

    • ggplot2 패키지의 geom_line함수는 선 그래프를 그리는 함수이다. 

    • geom_line함수를 이용하여 꺾은 선 그래프를 그리는 몇 가지 예를 소개하고자 한다.

     

    [선 그래프]

    • 아래의 코드는 ggplot2를 사용하여 간단한 선 그래프를 그리는 방법을 보여준다.

    • 쥐의 체중을 10 일간 계속 기록한 가상 데이터를 사용하여 x 축을 시간, y 축으로 쥐의 체중을 꺾은 선 그래프로 그리는 예를 나타낸다.

    library(ggplot2)
    library(ggsci)
    
    x <- data.frame(
        day  = 1:10,
        weight = c(120, 135, 145, 158, 173, 184, 198, 214, 209, 210)
    )
    
    g <- ggplot(x, aes(x = day, y = weight))
    g <- g + geom_line()
    plot(g)

     

    [여러개의 선 그래프]

    • 아래의 코드는 ggplot2를 사용하여 여러 선 그래프를 그리는 방법을 보여준다.

    • 먼저 가상 데이터로 5 마리의 쥐에 각각 A 미끼, B 미끼 C 미끼 D 미끼 E 먹이를주고, 10 일간의 체중을 측정 한 데이터를 행렬 형태로 작성한다. 

    • 그런 다음 행렬 형을 ggplot2가 쉽게 다룰 수 있도록 melt 함수로 변형하고 선 그래프를 그린다. 

    • 여기서는 준 먹이별로 색상을 바꾸기 위해 ggsci 색상 팔레트를 호출하여 사용하였다.

    library(ggplot2)
    library(ggsci)
    library(reshape2)
    
    x <- matrix(c(120, 118, 123, 120, 121, 119, 118, 121, 120, 120,
                  121, 135, 145, 158, 173, 184, 198, 214, 209, 212,
                  121, 130, 141, 148, 157, 168, 177, 189, 201, 210,
                  119, 120, 120, 123, 125, 127, 141, 163, 180, 224,
                  120, 128, 137, 144, 153, 163, 171, 179, 187, 199), ncol = 5)
    rownames(x) <- 1:10
    colnames(x) <- c("A", "B", "C", "D", "E")
    y <- melt(x)
    colnames(y) <- c("day", "treat", "weight")
    
    g <- ggplot(y, aes(x = day, y = weight, color = treat))
    g <- g + geom_line()
    g <- g + scale_color_nejm()
    plot(g)

     

    [선 그래프에서 오류바 표시하기]

    • 예를들어 각 샘플에 생물학적 복제 실험이 있다면, 평균과 표준 편차를 계산할 수 있다. 

    • 이때 평균을 선 그래프로 그리고 표준 편차를 오류 바로 그릴 수 있다. 

    • 이 경우 오류바를 그리기 위해 선 그래프 및 오류 바를 동시에 그릴 때, 양자를 미리 계산하여 데이터 프레임에 저장할 필요가 있다.

    library(ggplot2)
    library(ggsci)
    
    x <- data.frame(
        date = c(1, 2, 3, 4, 5,
                 1, 2, 3, 4, 5,
                 1, 2, 3, 4, 5),
        treat = c("A", "A", "A", "A", "A",
                  "B", "B", "B", "B", "B",
                  "C", "C", "C", "C", "C"),
        mean = c(200, 203, 193, 193, 187,
                 192, 211, 223, 232, 243, 
                 198, 200, 201, 204, 203),
        sd = c(4.2, 3.1, 3.2, 3.6, 3.5,
               4.1, 3.5, 3.6, 4.0, 4.3,
               4.2, 4.4, 4.3, 4.3, 4.1)
    )
    
    
    g <- ggplot(x, aes(x = date, y = mean, color = treat))
    g <- g + geom_line()
    g <- g + scale_color_nejm()
    g <- g + geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd, width = 0.3))
    plot(g)

     

    [다음글]

     

    [R] R을 이용한 통계 분석 및 데이터 시각화 : ggplot2 (geom_point)

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

    shlee1990.tistory.com

     

    [이전글]

     

    [R] R을 이용한 통계 분석 및 데이터 시각화 : ggplot2 (geom_bar)

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

    shlee1990.tistory.com

     

     

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

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

    • sangho.lee.1990@gmail.com

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

    • saimang0804@gmail.com

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

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