반응형

     정보

    • 업무명     : R 및 flourish studio 를 이용하여 국가별 탄소 배출량 시각화 레이싱 차트 만들기
    • 작성자     : 해솔
    • 작성일     : 2021.02.01
    • 설   명      :
    • 수정이력 :

     

     

     내용

    [개요]

    • 안녕하세요 웹 개발 및 데이터 분석을 담당하는 해솔 입니다. 
    • R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어입니다. 
    • 따라서 다양한 데이터 분석 및 가공이 가능하며 시각화 작업 역시 수행이 가능합니다.
    • flourish studio 는 웹 사이트에서 간편하게 시각화를 할 수 있는 툴이며 별도의 프로그램 설치가 필요없이 웹 브라우저에서 데이터를 입력하는 경우 이를 빠르게 시각화 할 수 있는 강력한 도구 입니다.
    • 본 글에서는 국가별 이산화탄소 배출량을 다운받은 후 이를 가공하여, flourish studio 를 이용하여 레이싱 차트를 만들어보고자 합니다.

     

    [특징]

    • 국가별 탄소 배출량 자료 다운로드
    • 데이터 가공
    • 시각화

     

    [기능]

    • 국가별 탄소 배출량 데이터 가공 및 시각화

     

    [활용 자료]

    • 하기 링크로부터 제공하는 글로벌 탄소 배출량 데이터 자료
     

    CO₂ and Greenhouse Gas Emissions

    Who is emitting greenhouse gases? Which countries and which sectors? And what needs to happen to reduce emissions?

    ourworldindata.org

     

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

    • 없음

     

    [사용법]

    • 소스 코드 참조

     

    [사용 OS]

    • Windows 10

     

    [사용 언어]

    • R v4.0.3
    • flourish studio

     

     소스 코드

    [자료 다운로드]

    • 자료를 다운받기 위해 아래의 링크에 접속 한다.
     

    CO₂ and Greenhouse Gas Emissions

    Who is emitting greenhouse gases? Which countries and which sectors? And what needs to happen to reduce emissions?

    ourworldindata.org

     

    • 스크롤을 내리면 아래의 화면이 나온다.

     

    • 해당 화면에서 다운로드 버튼을 누르면 자료를 다운로드 할 수 있다.

    다운받은 자료의 일부

     

    [데이터 라벨링 작업]

    • 원본 자료의 경우 자료를 국가의 이름이 영어로 되어 있다.
    • 따라서 국가의 이름을 좀 더 알아보기 쉽게 원본 데이터의 국가에 해당하는 이름을 한글로 바꿔주는 code_list를 따로 생성 하였다.
    • 코드 리스트는 총 2개로 나뉘어 있으며 하나는 명백히 국가인 것 나머지 하나는 대륙 전체나 단체 / 기타 사건 등에 대한 영어 이름을 한글로 바꾼 리스트 이다.
    • 즉 국가코드/한글 국가명 또는 국가코드가 없는 경우 영명을 한글로 바꾸어 매칭한 사전 테이블이라고 보면 된다.
    • 본문에 라벨링 예시 이미지 및 결과 파일을 같이 첨부 하였다.

    라벨링 예시
    Code_list.csv
    0.00MB
    code_list2.csv
    0.00MB

     

     

    [데이터 전처리]

    • 라이브러리 로드 및 데이터 및 사전에 라벨링된 코드 리스트 읽기
    library(dplyr)
    library(data.table)
    library(tidyverse)
    library(stringr)
    
    in_data = read.csv("./in/annual-co-emissions-by-region.csv") 
    Code_kr_name = read.csv("./Code_list.csv")
    Code_kr_name2 = read.csv("./Code_list2.csv")
    
    head(in_data)
    head(Code_kr_name)
    

     

    • 코드 목록과 데이터 매칭 및 전처리 작업
      • dplyr 패키지를 사용하여 데이터 전처리 작업
    in_data_L1 = dplyr::left_join(in_data,Code_kr_name,by="Code")
    in_data_L2 = dplyr::left_join(in_data_L1,Code_kr_name2,by="Entity")
    colnames(in_data_L2)[4] = "CO2"
    
    in_data_L3 = in_data_L2 %>%
      dplyr::filter(!is.na(Code_KR) | !is.na(Code_KR2)) %>%
      dplyr::mutate(Code_KR = ifelse(!is.na(Code_KR2),Code_KR2,Code_KR)) %>%
      dplyr::select(-Code_KR2) %>%
      dplyr::mutate(CO2 = CO2*10.0) %>% # 단위 : 1만톤 
      dplyr::filter(CO2 > 0) %>%
      dplyr::select(Year,Code_KR,CO2) %>%
      dplyr::distinct() 
    
    head(in_data_L3)

     

    • 행/열 전환 작업
      • flourish studio 를 통해 레이싱바를 시각화 하는 경우 각각의 컬럼을 따라 시간순으로 진행된다.
      • 따라서 위 사이트에 입력해야 할 데이터 역시 이 규칙을 따라야 한다.
      • 그러나 각 국가별로 데이터의 시작 기간과 그 간격이 일정하기 않기 때문에 tidyr 패키지의 spread 함수를 이용하여 일괄적으로 행과 열 전환이 불가능하다.
      • 따라서 직접 loop 문을 이용하여 직접 행/열을 전환시키는 작업을 수행 하였다.
      • 결과적으로 result.csv 파일이 생성되는데 이것이 우리가 최종적으로 시각화에 사용하고자 하는 파일이다.
      • 출력된 파일은 행과 열이 전환되어 있으며 UTF-8로 인코딩 되어있다. 하단에 예시 파일을 첨부 하였다.
    min_col = min(in_data_L3$Year)
    max_col = max(in_data_L3$Year)
    
    row_list = unique(in_data_L3$Code_KR)
    new_df = data.frame(Code_KR = row_list)
    
    for (ccol in seq(min_col,max_col,1)) {
    
      in_data_L4 = in_data_L3 %>% 
        dplyr::filter(Year == ccol) %>% 
        dplyr::select(-Year)
      
      new_df = dplyr::left_join(new_df,in_data_L4,by=c("Code_KR"))
      
      new_df = new_df %>%
        dplyr::mutate(CO2 = ifelse(is.na(CO2),"",CO2)) %>%
        dplyr::distinct() 
      
      colnames(new_df)[dim(new_df)[2]] = paste0(ccol,"년")
      
      print(dim(new_df)[2])
      
    }
    
    write.table(new_df,"result.csv",row.names = F,sep=",")

     

     

    result.csv
    0.22MB

     

    [flourish studio 를 통한 시각화]

    • 아래의 사이트에 접속한다.
     

    Flourish | Data Visualisation & Storytelling

    Beautiful, easy data visualization and storytelling

    app.flourish.studio

     

    • 스크롤을 내리면 Bar chart race 항목이 보이는데 들어간다. (아래 이미지의 첫번째)

     

    • 상단에서 생성했던 데이터를 import 한 후 설명서에 따라 만들어 주면 된다.
    • flourish studio 의 레이싱바를 만드는 자세한 방법은 아래의 링크를 참조하면 된다.
     

    Bar Chart Race Data Visualization

    Bar Chart Race Data Visualization: The bar chart race data visualization is an entertaining way to show off your time series data. The animation provides a more interactive and visually appealing alternative to the standard bar chart. If you have been on t

    www.instructables.com

     

    [결과 영상]

    www.youtube.com/watch?v=YBV9vGrMDKs&t

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

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

    • sangho.lee.1990@gmail.com

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

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