정보

    • 업무명     : R을 이용한 통계 분석 및 데이터 시각화 : 이중축

    • 작성자     : 박진만

    • 작성일     : 2020-04-03

    • 설   명      :

    • 수정이력 :

     

     내용

    [개요]

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

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

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

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

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

     

     

    [특징]

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

       

    [기능]

    • 데이터형 소개

     

    [활용 자료]

    • 없음

     

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

    • 없음

     

    [사용법]

    • 소스 코드 예시 참조

     

    [사용 OS]

    • Windows 10

     

    [사용 언어]

    • R v3.6.2

    • R Studio v1.2.5033

     

     소스 코드

    [이중축]

    • R로 그린 그래프 축 좌표를 여러 개 추가 할 때 axis를 이용할 수 있다.

     

    [플롯의 좌우에 y 축 두개를 붙이는 방법]

    • 아래의 예시는 axis함수를 3 회 이용하여 x 축을 하나 y 축을 2 개 그려 넣는 예시이다. 

    • 그러나 R의 그래프는 오른쪽 여백이 작고, y 축을 추가해도 표시되지 않는 경우가 있다.

    • 이 경우에는 par함수의 oma인수로 오른쪽 여백을 넉넉하게 확보 해 둘 필요가 있다.

    x <- 1:10
    y <- c(2, 1, 3, 2, 4, 8, 14, 20, 22, 29)
    z <- c(2, 1, 3, 5, 7, 7, 6, 5, 4, 6)
    
    par(oma = c(0, 0, 0, 2))
    
    # 1st figure (x - y)
    plot(x, y, xlim = c(0, 10), ylim = c(0, 30), 
         xlab = "x", ylab = "y", type = "l", col = "orange", lwd = 2,
         axes = FALSE)
    
    axis(1)   # x
    axis(2)   # left y
    
    
    # 2nd figure (x - z)
    par(new = TRUE)
    plot(x, z, xlim = c(0, 10), ylim = c(0, 10),
         xlab = "", ylab = "", type = "l", col = "cyan", lwd = 2,
         axes = FALSE)
    mtext("z",side = 4, line = 3)  # right y label
    axis(4)                        # right y
    
    box()
    legend("topleft", legend = c("y", "z"), col = c("orange", "cyan"), lty = 1)

     

     

    [플롯의 왼쪽에 y 축 두개를 붙이는 방법]

    • 아래의 예시는 axis함수를 3 회 이용하여 x 축을 하나 y 축 2 개 그려 넣는 예시이다.

    • 이번에는 왼쪽에 y 축 2 개 그려지고 이싿.

    • 이 경우 par함수의 oma인수를 이용해 왼쪽 여백을 넉넉하게 확보 해 둘 필요가있다.

    x <- 1:10
    y <- c(2, 1, 3, 2, 4, 8, 14, 20, 22, 29)
    z <- c(2, 1, 3, 5, 7, 7, 6, 5, 4, 6)
    
    par(mar = c(5, 8, 3, 2))
    
    # 1st figure (x - y)
    plot(x, y, xlim = c(0, 10), ylim = c(0, 30), 
         xlab = "", ylab = "", type = "l", col = "orange", lwd = 2,
         axes = FALSE)
    axis(1)                                            # x
    mtext(1, text = "x", line = 3)                     # x label
    axis(2, ylim = c(0, 30), line = 1, col = "orange") # left 1st y
    mtext(2, text = "y", line = 3)                     # left 1st y label
    
    # 2nd figure (x - z)
    par(new = TRUE)
    plot(x, z, xlim = c(0, 10), ylim = c(0, 10),
         xlab = "", ylab = "", type = "l", col = "cyan", lwd = 2,
         axes = FALSE)
    axis(2, ylim = c(0, 10), line = 5, col = "cyan")   # left 2nd y
    mtext("z",side = 2, line = 7)                      # left 2nd y label

     

    [axis 함수]

    • axis함수는 그래프의 좌표를 그리는 함수이다.

    • 해당 함수는 axis(1), axis(2)같은 숫자를 주는 방식으로 사용한다.

    • 대입 할 수있는 숫자는 1,2,3,4이며, 각각 아래, 왼쪽, 위쪽, 오른쪽 축을 의미한다.

    axis(1, xlim = c(0, 10))
    axis(2, ylim = c(0, 100))

     

    • 또한 axis이 line옵션을 주면 축의 위치를 조정할 수있다. 

    • 이 경우 mar옵션을 사용하여 여백을 충분히 취할 필요가있다.

    par(mar = c(5, 8, 2, 2))
    axis(1, line = 4)    # 아래의 가로축을 제자리에서 4글자 만큼 아래에 그림.
    axis(2, line = 6)    # 왼쪽 세로축을 제자리에서 6글자 만큼 아래에 그림.

     

    • 축에 색상을 지정하려면 col인수를 이용한다.

    axis(1, col = "orange")
    axis(2, col = "blue")

     

    [다음글]

     

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

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

    shlee1990.tistory.com

     

     

    [이전글]

     

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

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

    shlee1990.tistory.com

     

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

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

    • sangho.lee.1990@gmail.com

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

    • saimang0804@gmail.com

     

     

     

     

     

     

     

     

     

     

     

     

     

     

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