Data Science/R

Visualize This 실습 - 시간시각화 : 막대그래프

winney916 2021. 4. 18. 15:49
728x90

 ADsP를 준비하는 동안 "빅데이터 분석도구 R 프로그래밍(노만 매트로프)"라는 책을 사게 됐다. 뭐 물론 열심히 읽어보지는 않았다. 아, 이슈는 이게 아니다!

 이 책을 구매하려고 할 때, 세트로 묶여있는 상품을 보게 되었다. 묶인 상품은 visualize this라는 이름의 책인데, 사놓으면 언젠가 보겠지 라는 마음으로 구매했다. 그 언제가 언제 될지는 모르겠지만.

 

 ADsP를 응시하고, 경영 빅데이터를 뒤로 미루게 되면서 시간이 비었다. 그 사이에 읽어봐야겠다는 생각이 들어 읽기 시작했다. 헌데 왠걸, 개재밌음

 

 데이터 분석의 결과물이라고 할 수 있는 비주얼라이징은 사실 굉장히 중요한 부분이였으나 이 영역에 대한 지식이 전무했다. ADsP를 공부하면서 R프로그래밍일 했는데, 그래프를 그릴 때 마다  "대체 이딴 그래프를 누가 볼까?" 하는 의문이 들었다. 이 의문을 완벽하게 해결해 준 책이다.

 

 책에서 제시해준 비주얼라이징 방식은 여러 방향이 있지만, 이 정도는 내가 해야겠다 혹은 해볼만 하다 라고 느꼈던 부분은 3가지 정도이다.

 

 1. python : 순수한 파이썬으로 작업하는거다. NumpySciPy라는 과학 계산용 라이브러리를 이용하면 좋다. 하지만 역시나, 프로그래밍만 이용해서는 전혀 예쁘지가 않다.

 

 2. Web Script : HTML, CSS, JS를 가지고 프로그래밍 하는 방법이다. 스타일 시트를 이용할 수 있는 만큼 결과물이 훨씬 좋다. 뿐만아니라 JS를 통한 인터랙션도 가능하기 때문에 굉장히 좋은 방법이라고 생각한다. 책에서는 프로토비즈(Protovis)를 추천해줬지만 다른 라이브러리나 프레임워크들도 많다.

 

 3. R project + Illustrator : R로 데이터 전처리, 분석, 기초 그래프 그리기까지 진행을 하고 Adobe Illustrator로 보정한다. 책에 나오는 실습 자료의 대부분이 이 방법을 사용한다. 내가 보기에도 가장 합리적이다. 프로그래밍으로 그래프를 빠르게 그릴 수 있고, 일러스트를 통해서 보기 좋게 보정할 수도 있다. 

 

 아무튼 나는 방법 3을 선택했고, 실습을 진행하기로 했다.

 

 이 피드에서 설명할 데이터는 핫도그 먹기 대회의 데이터이다. 데이터에 대한 설명은 이쯤하도록 하고 일단 실습 내용부터 보도록 하자. (귀찮) 아, 데이터는 책의 저자인 네이선 야우님의 홈페이지인 flowingdata.com/ 에서 확인할 수 있다.

 

 R에서 그렸을 때의 그래프(barplot 함수)이다. 이런 저런 평이 나올 수 있지만, 일단 내가 보기에는 끔찍하다. 그래도 함수의 인자들을 조금 더 추가해서 스토리를 더 넣어보자. 

 

 

 

 

 

 

 barplot 함수의 인자 중 col인자와 space인자를 통해서 막대의 색깔 및 막대 사이의 간격을 조절했다. 색이 칠해진 막대는 우승자가 미국인일 경우를 나타낸 것이다. 이제 그래프에 약간의 흥미거리가 생긴 듯 하다. (저 빨간색은 뭘까 하고..)

 

 그래도 재미없는 그래프인건 여전하다. 세로축을 설명하는 문구는 (barplot 함수 상에서의 ylab 인자) 90도 회전되어 있는 탓에 읽기 불편하기도 하고, x축에 표시된 연도도 그닥 보기좋진 않다. 하지만, 안타깝게도 R프로그래밍에서는 더이상 손을 쓸 방법이 없다. (물론 내 역량 부족이 가장 큰 원인이다.)

 

hotdogs = read.csv("http://datasets.flowingdata.com/hot-dog-contest-winners.csv", sep=",", header=TRUE)

fill_colors = c()
for (i in 1:length(hotdogs$Country)){
  if (hotdogs$Country[i] == "United States"){
    fill_colors = c(fill_colors, "#821122")
  } else {
    fill_colors = c(fill_colors, "#cccccc")
  }
}

barplot(hotdogs$Dogs.eaten, names.arg = hotdogs$Year,
        main = "Nathan's Hot Dog Eating Contest Results, 1980-2010",
        col=fill_colors, border=NA, xlab="Year",  space=0.3,
        ylab="Hot dogs and buns (HDB) eaten")

 이상 작성된 R 코드이다.

 

 이제 책에서 바라는 대로 이 그래프를 pdf 파일로 저장하여 일러스트레이터에서 오픈하자.

 과정을 촬영하지 않았다... 새벽에 하느라고 겨를이 없었거든.. 아무튼 이런저런 일러스트의 기능을 활용해서 보정작업을 진행했고, 스토리도 입혔고, 흥미를 끌만한 부분들도 만들었다. 확실히 일러스트로 만져야 더욱 재밌는 시각자료가 나오는 것 같다. (근데 일러스트 하니까 손목이 너무 아팠다 ㅠㅜㅠㅜㅠㅜ 중노동 수준)

 

 아무튼 결과물인 이거다!

 데이터 사이언스, Master of Business Analytics를 꿈꾸는 나의 삶에 좋은 이정표가 되어주길!