[R] R 및 flourish studio 를 이용하여 국가별 탄소 배출량 레이싱 차트 만들기

 정보

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