R 시각화 튜토리얼 Intro

Page content

Intro

A picture is worth a thousand words — English Language Adage The simple graph has brought more information to the data analyst’s mind than any other device. — John Tukey

한장의 그림이 수천단어보다 가치가 있다는 영어속담과, 명료한 시각화가 데이터분석가에게 다른 어떤 도구보다 더 많은 정보를 제공한다는 유명한 데이터 과학자의 조언. 핵심은 시각화이다.

본 장에서는 ggplot2 패키지를 활용한 시각화를 먼저 보여줄 것이다. 먼저 간단하게 ggplot2 패키지에 소개하자면 Grammar of Graphics1의 철학을 담아서 R 생태계에서 유명한 학자 중, Hadley Wickham에 의해 주도적으로 개발되었다. 그래프에도 문법이 있다는 패키지의 철학 아래, R의 시각화는 괄목할만한 발전을 이루었고 이는 R의 대중화에도 큰 영향을 끼쳤다.

이제 본격적으로 R 시각화를 작성해보자.

I. 사전준비

본 장에서는 시각화를 위해서 ggplot2를 주요 패키지로 사용한다. ggplot2 패키지를 설치했다고 가정한다. 만약 처음 패키지를 설치하는 사람이라면 R 패키지 설치2에서 다시 한번 R 패키지 주요 생태계에 대해 이해하도록 한다.

Studio를 열고 아래 코드를 실행하자:

library(ggplot2)

library(ggplot2)를 실행하면 Registered ~라는 문구가 나왔다면 컴퓨터내 시스템에서 RStudio 환경으로 ggplot2 패키지를 정상적으로 불러왔다는 뜻이다. 이제 패키지 내 다양한 함수를 사용할 수 있는 사전준비가 완료된 것으로 이해해도 좋다.

II. 데이터셋 - 텍사스 부동산 판매데이터

대한민국에서 가장 중요한 문제중의 하나인 부동산과 관련하여 시각화를 진행하려 한다. 지금은 ggplot2 패키지 내에 존재하는 텍사스 부동산 판매데이터를 통해 시각화를 진행하지만, 향후에는 국내 부동산 데이터를 직접 가져와서 시각화를 진행하기를 바란다.

txhousing 데이터는 총 8602개의 관측치와 9개의 변수로 구성이 되어 있다. txhousing 데이터의 출처 및 각 변수(Column)에 대해 조금 더 자세히 알고 싶다면 R 소스코드 에디터에서 help(txhousing)을 실행하여 도움말을 참고하기를 바란다.

(1) ggplot2 시각화 예시

먼저 산점도를 시각화를 통해서 ggplot2의 문법에 대해 이해하도록 해보자.

ggplot(data = txhousing, aes(x = listings, y = sales)) + 
  geom_point()
## Warning: Removed 1426 rows containing missing values (geom_point).

위 그래프는 listings 변수와 sales변수 사이에 양의 상관관계가 있는 것으로 확인 되었다. 다시 말하면 listings 갯수가 증가하면 증가할수록 sales 갯수도 증가하는 것으로 보인다.

그렇다면 ggplot2 그래프의 구조는 어떻게 될까? 기본적으로 ggplot2 그래프는 레이어의 층을 겹겹이 쌓는다고 생각하면 보다 쉽다. 아래 그림을 우선 보자.

ggplot2 패키지 개발자인 해들리 위컴은 The Layered Grammar of Graphics라는 논문을 통해서 위와 같은 그래프의 문법을 제안했다. 순서대로 설명하면, (1) 그래프를 그릴 데이터, (2) X축과 Y축에 놓을 변수, (3) 그래프의 종류, 그리고 (4) 옵션.

코드와 함께 설명하면 다음과 같다. 다시 한번 코드를 확인해본다.

ggplot(data = txhousing, aes(x = listings, y = sales)) + 
  geom_point()
  • ggplot(): 그래프를 그릴 함수를 호출한다.
  • data = txhousing: txhousing 데이터를 사용한다.
  • aes(x = listings, y = sales): x축에는 listings라는 변수를, y축에는 sales라는 변수를 설정한다.
  • geom_point(): 산점도라는 종류의 그래프를 그리겠다.

위와 같은 방식으로 데이터명와 x축, y축 그리고 그래프의 종류만 바꿔주면 꽤나 근사한 그래프가 나올 수 있다.

그런데, 여기서 몇가지 궁금한 것이 생겨야 한다. 그래프 종류는 많지 않나요? X축과 Y축에는 어떤 변수를 넣어야 하나요? * 해석은 어떻게 해야 하나요?

결론적으로 말하면, 위 종류 모두 결국엔 통계와 연관성이 있다. 매우 복잡한 통계적인 해석은 일단 차후에 하더라도 기본적인 방법론에 대해서는 강사의 경험담과 여러 책을 통해 알게된 기본적인 내용을 공유한다.

R 강의 소개


  1. Hadley Wickham이 작성한 ggplot2 패키지에 관한 논문을 읽어보는 것을 제안한다. “The Layered Grammar of Graphics”, http://vita.had.co.nz/papers/layered-grammar.pdf ↩︎

  2. 강사가 2019년 후반부에 책을 쓸까하다가 기웃기웃 거리던 때에 작성했던 내용이다. github.io 블로그로 통합한 이후 더 이상 업데이트는 시키지 않고 있다. 여기에 있는 내용들도 조금씩 옮길 예정이다. 덧붙여서, 강사가 과거에 올렸던 tistory, RPubs에 올렸던 자료들도 틈틈히 본 포스트에 다듬어서 올릴 예정이다. ↩︎