정보

    • 업무명     : 상자그림을 다채롭게 보여주는 "lvplot" 패키지 소개

    • 작성자     : 박진만

    • 작성일     : 2020-03-03

    • 설   명      :

    • 수정이력 :

     

     내용

    [특징]

    • 해당 패키지는 데이터 분포를 표현하는 하나의 수단으로 유용한 표현 방법.

    • 단독 사용 뿐 아니라 "ggplot2" 패키지와의 조합이 좋음 

     

     

    [기능]

    • lvplot 패키지 소개

     

    [활용 자료]

    • 없음

     

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

    • 없음

     

    [사용법]

    • 소스 코드 예시 참조

     

    [사용 OS]

    • Windows 10

     

    [사용 언어]

    • R v3.6.2

    • R Studio v1.2.5033

     

     소스 코드

    [명세]

    • 전역 설정

      • 최대 10 자리 설정

      • 메모리 해제

    # Set Option
    options(digits = 10)
    memory.limit(size = 9999999999999)

     

    • 라이브러리 읽기

    # Library Load
    library(lvplot)

     

    • 일반 박스 plot 과 LVboxplot 과의 비교

      • LVboxplot 명령 수행 결과

    # 일반 박스 plot 과 LVboxplot 과의 비교
    par(mfrow=c(4,2), mar=c(3,3,3,3))
    for (i in 1:4) {
      x <- rexp(10 ^ (i + 1))
      boxplot(x, col = "lightblue", horizontal = TRUE)
      title(paste("rexp, n = ", length(x)))
      LVboxplot(x, col = "lightblue", xlab = "")
    }

     

     

    • 추가 라이브러리 로드 (ggplot2, scales)

    # 추가 라이브러리 로드
    library(ggplot2)
    library(scales)

     

    • 플로팅을 위한 임의의 데이터 생성

    PlotData <- NULL
    for (i in 1:4) {
      
      EXPData <- cbind(i, rexp(10 ^ (i + 1)))
      PlotData <- rbind(PlotData, EXPData)
      
    }
    PlotData <- as.data.frame(PlotData)
    head(PlotData)
    

     

    • 플로팅 수행

      • geom_lv 명령

    ####### 플로팅 수행 ##########
    ggplot(PlotData, aes(PlotData[, 1], PlotData[, 2])) +
      geom_lv(aes(fill=..LV..)) +
      scale_fill_manual(values = seq_gradient_pal(c("#e1e6ea", "#505457", "#4b61ba", "#a87963",
                                                    "#d9bb9c", "#756c6d", "#807765", "#ad8a80"))(seq(0, 1, length = 14))) +
      facet_wrap(~i)

     

     

    [전체]

    #install.packages("lvplot")
    library(lvplot)
    
    
    # 일반 박스 plot 과 LVboxplot 과의 비교
    par(mfrow=c(4,2), mar=c(3,3,3,3))
    for (i in 1:4) {
      x <- rexp(10 ^ (i + 1))
      boxplot(x, col = "lightblue", horizontal = TRUE)
      title(paste("rexp, n = ", length(x)))
      LVboxplot(x, col = "lightblue", xlab = "")
    }
    
    # 추가 라이브러리 로드
    library(ggplot2)
    library(scales)
    
    
    ### 플로팅을 위한 데이터 생성 #####
    PlotData <- NULL
    for (i in 1:4) {
      
      EXPData <- cbind(i, rexp(10 ^ (i + 1)))
      PlotData <- rbind(PlotData, EXPData)
      
    }
    PlotData <- as.data.frame(PlotData)
    head(PlotData)
    
    ####### 플로팅 수행 ##########
    ggplot(PlotData, aes(PlotData[, 1], PlotData[, 2])) +
      geom_lv(aes(fill=..LV..)) +
      scale_fill_manual(values = seq_gradient_pal(c("#e1e6ea", "#505457", "#4b61ba", "#a87963",
                                                    "#d9bb9c", "#756c6d", "#807765", "#ad8a80"))(seq(0, 1, length = 14))) +
      facet_wrap(~i)
    

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

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

    • sangho.lee.1990@gmail.com

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

    • saimang0804@gmail.com
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기