Data Visualization

꽤 괜찮은 데이터 지도(data map)를 그려주는 Natural Breaks란?

회사 블로그(gisutd.tistory.com)에 올렸던 글과 동일한 포스팅입니다.(2015.4월)



지난 4월 22~24일, LX대한지적공사 공간정보 아카데미에서 오픈소스GIS 분석가 과정 교육이 진행되었습니다.


2일차 교육을 저희가 맡아서 진행을 하였습니다. 치킨집을 차리기 위한 상권분석, 서울시 어린이집 부족지역을 찾는 과정을 진행하였고, 교재로 만든 내용들을 기초로 앞으로 기회가 될때마다 한 단락씩 포스팅하려고 합니다.


(이 글에 첨부된 지도나 그림은 모바일보다 데스크탑 화면을 통해서 읽으시는게 좀 더 낫습니다)


지도를 표현하는 방법 중 단계구분도(Choropleth map)은 익숙한 방법 중 하나입니다. 다음과 같은 지도를 '단계구분도'라고 부릅니다.



위의 지도는 단계구분도를 설명할 때 많이 인용하는 지도 중 하나입니다. 2011년 런던에서 폭동이 많이 발생하였던 시점에, 가디언지에서 구글맵을 기반으로 블록별 실업률과 폭동 발생위치를 함께 보여주는 지도를 제작하였습니다(제목: Mapping the riot with poverty).


지도에서 붉은색이 강할수록 실업률이 높은 지역이고, 반대로 푸른색이 짙을수록 실업률이 낮은 지역을 뜻합니다. 그리고 블록지도 위에 놓인 구글마커는 폭동이 발생한 위치를 보여주고 있습니다. 지도 위의 분포만을 확인하더라도 실업률이 낮은 지역에서 폭동이 발생했던 경우는 찾아보기 힘듭니다.


이번 포스팅에서 설명하고자 하는 부분은, 위의 지도처럼 속성값이 높은지역과 낮은지역을 시각적으로 명확하게 구분하여 전달할수 있는 방법에 관한 것입니다. 공간을 런던이 아닌 서울로 옮겨서, 통계청에서 발표한 2012년 말 기준 집계구별 사업체종사자(직장인구)를 기준으로 맵핑해보겠습니다.


<서울시 집계구 지도, 강남구를 확대한 집계구>


통계청집계구 데이터를 통해, 서울시에 종사하는 약 437만 명의 직장인을 총 16,230개의 세세한 블록(집계구)으로 나뉘어 수치화된 정보를 알 수 있습니다. 위의 왼쪽 지도는 서울시 전체 집계구 경계를 올려본 결과이고, 오른쪽 지도는 강남구에 줌인하여 살펴본 것입니다. 우리가 일반적으로 알고 있는 행정동 경계보다 훨씬 잘게 쪼개어져 있는것을 알 수 있습니다. 그러면 이제 집계구 안에 담긴 사업체종사자 수를 표현해보겠습니다.

<서울시 집계구별 사업체종사자 지도(Natural Breaks)>


서울시 집계구별 사업체종사자입니다. 우리가 익히 알고 있듯, 중구의 중심업무지구, 강남구의 테헤란로, 금천구의 가산디지털단지, 영등포구 여의도가 두드러집니다. 이외에는 강서구의 가장 서측 지역이 눈에 띄는데, 바로 김포공항이 위치한 곳입니다. 2012년 말 기준으로 25,457명이 근무하고 있는 것으로 나타납니다.


위의 지도를 그리는데 적용한 방법은 Natural Breaks(Jenks) 입니다. 지도표현에서 등급(class)을 구분하는 여러가지 방법 중 하나입니다. 비교할 수 있는 다른 대표적인 방법으로는 등간격(Equal Interval)과 등분위(Quantile)이 있습니다. 


등간격(Equal Interval)은 동일한 간격으로 등급을 구분하는 방법입니다. 성적평가로 예를 든다면, 90점 이상은 A학점, 80점 이상 B학점, 70점 이상은 C학점으로 구분하는 것입니다. ESRI Support의 GIS Dictionary에 따르면 다음과 같이 정의되어 있습니다.

equal-interval classification

  1. [cartography] A data classification method that divides a set of attribute values into groups that contain an equal range of values.

등분위(Quantile)는 동일한 비율로 등급을 구분하는 방법입니다. 마찬가지로 성적평가에 대입해본다면, 50명의 학생 중 10등(상위 20%)까지 A학점, 11~20등(상위 40%)까지 B학점, 21~30등(상위 60%)까지 C학점으로 평가하는 것입니다. 동일한 비율구간 단위로 묶는 방법이며, 동시에 동일한 갯수 단위로 묶는 방법이기도 합니다. GIS Dictionary에서는 다음과 같이 설명하고 있습니다. 

quantile classification

See Also: classification

  1. [data structures] A data classification method that distributes a set of values into groups that contain an equal number of values.

이 두가지 방법으로 서울시 집계구별 사업체 종사자를 맵핑하면 어떻게 될까요? 결과는 다음과 같습니다.

<서울시 집계구별 사업체종사자 지도(등간격)>


먼저 등간격으로 구분한 사업체종사자 지도 입니다. 중구의 일부지역, 영등포구 여의도, 금천구의 가산디지털단지 등 몇몇 지역을 제외하고는 아무도 일하지 않는 황무지처럼 표현됩니다. 조금 더 자세히 살펴보겠습니다.


<중구 명동을 중심으로 본 집계구별 사업체종사자, 서울시 내 종사자수 상위 집계구>


서울시에서 가장 종사자가 많은 집계구는 명동입니다. 지도에 표시된 을지로입구역부터 명동역 사이에 위치한 명동상권 안에는 총 82,606명이 종사하고 있습니다. 오른쪽의 테이블을 살펴보겠습니다. 회색 컬럼에 '269'라고 표시된 블록이 명동상권이고, 그 아래로는 종사자수 2위부터 13위까지 입니다. 서울시 전체 집계구가 1만6천개가 넘는데, 1위부터 13위 사이만 살펴봐도 네 배에 가까운 차이가 납니다.


등간격으로 등급을 구분하여 지도로 표현하게 되면 이와 같은 문제가 나타나기도 합니다. 비정상적으로 분포를 벗어난 아웃라이어(outlier)로 인해 전체적인 패턴을 이해하기 어려운 방식으로 지도가 그려지는 경우가 있습니다.


다음으로 등분위(Quantile) 방법으로 그려진 지도를 확인해보겠습니다.


<서울시 집계구별 사업체종사자 지도(등분위)>


등분위로 서울시 집계구별 사업체종사자를 맵핑한 결과입니다.푸른색으로 알록달록한 지도가 그려졌습니다. 지도에서 짙은 푸른색으로 칠해진 지역은 전체 1만6천 개 집계구 중 종사자 수가 상위20%에 해당하는 집계구입니다. 등간격으로 구분하여 그린 지도와는 반대로, 서울시 대부분 지역에서 많은 사람들이 북적이며 일하는 것으로 보여집니다.


내추럴브레이크 - 등간격 - 등분위 모두 5개 등급으로 구분하여 지도를 그렸는데요, 실제로 값을 어떻게 나누었는지 비교해보겠습니다.




사업체종사자수 1등급 구간을 살펴보면, 내추럴브레이크는 26,530명 이상, 등간격은 66,085명 이상, 등분위는 267명 이상인 것을 확인할 수 있습니다. 지금까지 살펴본 바로는, 집계구별 사업체종사자수를 표현하기에는 내추럴브레이크를 사용하는 것이 지도를 읽는 사람으로 하여금 시각적으로 이해할 수 있도록 돕는데 좋은 방법으로 판단됩니다. 하지만 내추럴브레이크를 이용한 등급구분은 등간격이나 등분위처럼 간단한 비유로 설명하기가 쉽지 않습니다. 그래서 구글 검색을 통해 몇가지 이해할 수 있는 정의들을 골라보았습니다.


아래 글상자에는 GIS위키(wiki.gis.com)에 소개된 Jenks Natural Breaks Classification 정의를 담았습니다. (참고로 '내추럴 브레이크'라는 용어는 ArcGIS 프로그램을 통해 만들어진 것이고, 방법론은 Jenks 교수에 의해 만들어진 것입니다. 그래서 Jenks Natural Breaks 또는 Jenks Optimal Algorithm 또는 줄여서 Jenks 라 부르기도 합니다. 실제로 많은 지도제작자들이 데이터를 7등간 이하로 구분할 때에 널리 사용하는 방법입니다.


The Jenks Natural Breaks Classification (or Optimization) system is a data classification method designed to optimize the arrangement of a set of values into "natural" classes. This is done by seeking to minimize the average deviation from the class mean, while maximizing the deviation from the means of the other groups. The method reduces the variance within classes and maximizes the variance between classes.[1][2]

[1] Jenks, George F. 1967. "The Data Model Concept in Statistical Mapping", International Yearbook of Cartography 7: 186-190.

[2] McMaster, Robert, "In Memoriam: George F. Jenks (1916-1996)". Cartography and Geographic Information Science. 24(1) p.56-59.


이 문장을 해석해보자면, Jenks Natural Breaks Classification은 데이터값의 배열을 자연스러운 등급(natural classes)으로 최적화(optimize)하여 데이터로 묶는(data classification) 방법입니다. 내추럴브레이크를 적용하면, 같은 등급 내 전체 값들의 평균을 기준으로 평균편차(average deviation)는 최소화되고, 각 등급간의 분산(variance)은 극대화하는 것입니다. 즉, 등급 내의 분산은 줄이고 등급 간의 분산은 최대화하는 방법입니다. 


문장 해석만으로는 쉽게 이해되지 않는 부분이 있어, 다음과 같이 가상의 예시를 만들어보았습니다. 임의로 축구팀 A부터 O까지 15개팀의 승리횟수를 적어보았습니다.


도표에 기록된 15개 축구팀을 5개 등급으로 묶어보겠습니다. 적용하는 방법은 등분위, 등간격, 내추럴브레이크 세가지 방법입니다. 



먼저 등분위로 등급을 나누어보았습니다. 위의 차트처럼 3개씩 묶이게 됩니다. 등분위로 등급을 구분하게 되면, 승리횟수를 기준으로 F, I, L 팀은 바로 단 1승 차이로 바로 상위권에 있는 G, J, M과 다른 등급에 묶입니다. 동일한 갯수로 구분되는 장점은 있으나, 보기와 같이 막대차트가 아닌 색상만으로 인지한다면 F, I, L 세 팀의 실제 승리횟수에 대해서는 올바르게 인식하기가 쉽지 않아보입니다.



등간격으로 등급을 나누어보았습니다. 가장 많은 승리를 거둔팀이 37승, 적은 팀이 1승으로 총 36승의 차이가 나고, 5등간으로 나누면 7.2가 동일한 간격이 됩니다. 등간격 방식으로는 1등급에 L, M, N, O 4개의 팀이 해당되고, 4등급에는 F팀 하나가 분배됩니다. 그리고 5등급에는 A~E 다섯개 팀이 해당되게 됩니다. 이 방식에서도 F팀과 G팀은 불과 1점 차이로 서로 다른 등급으로 구분이 됩니다.


마지막으로 내추럴 브레이크를 적용하였을 때 결과입니다. 이 결과는 프로그램을 통해서 등급을 구분한 것이며 직접 수식을 적용하지는 않았습니다. 실제로 이와 같이 등급을 나누는 방법은 조금 까다로운 편인데, 짧게 설명하자면 임의로 등급을 나눈 뒤 반복적으로 평균과 편차를 계산해가면서 최적화된 값을 만족할 때까지 객체의 등급을 하나씩 조정하는 연산을 반복수행하는 것입니다.


결과를 놓고 보았을 때에 상식적으로 등급이 묶인 것으로 이해할 수 있습니다. 등급구간별 객체 수는 4개, 3개, 3개, 2개, 3개로 균등하지는 않지만, 만약 우리에게 위의 막대차트를 색상없이 보여주면서 '축구팀 15개를 성적에 따라 상위권/중상위권/중위권/중하위권/하위권 5개로 구분하시오'라는 문제가 주어진다면 이와 같이 주관적으로 구분할 수 있을 것입니다. GIS위키에도 '최적화란 수치적인 연산을 통해 객관적으로 데이터를 등급화하는 것이지만, 내추럴브레이크는 주관적으로 데이터를 등급화한다(Unlike the optimal method which uses a numerical measurement to separate data classes objectively, the natural breaks method classifies data subjectively. (Slocum, Terry A., and Terry A. Slocum. Thematic Cartography and Geovisualization. Upper Saddle River, NJ: Pearson Prentice Hall, 2009. Print.))' 라고 소개하고 있습니다.


주관적인 방법임에도 불구하고 앞서 서울시 사업체종사자 지도에서 확인한 바와 같이, 실제적인 현상을 설명하기에 훌륭한 방법임에는 틀림없습니다. 기존 연구에서도 Jenks 최적화 알고리듬(Jenks optimal algorithm)은 정량화할 수 있는 동질성(quantifiable homogenetity)과 통계적 클러스터 개념(cluster concept in statistics)을 기초로 한 최적화된 등급화(classification) 방법이라고 증명된 바가 있습니다.


이번 포스팅 이후 다음 기회에는 내추럴 브레이크를 수행하는 실제 연산식과, 결과로 나온 등급을 검증하는 방법에 대해 소개하겠습니다. 




신고
크리에이티브 커먼즈 라이선스
Creative Commons License

맨하탄과 서울의 스타벅스 입지

스타벅스 입지지도. CartoDB를 이용해서 제작.

Tip

1. visible layer를 클릭하면 맥도날드(미국), 스타벅스(미국), 롯데리아(서울), 스타벅스(서울) 레이어가 있습니다. 껐다켰다 하면 됩니다.

2. 검색창에 seoul을 치면 서울로 이동합니다. 서울에서 롯데리아와 스타벅스의 입지전략의 차이점을 볼 수 있겠네요(미국에서는 맥도날드와 스타벅스 입지 차이점). 데스크톱에서만 검색창이 보입니다. 모바일에서는 레이어 on/off만 가능!

작년 11월에 틈나서 잠깐 만들어본건데, 페북 공유만 해두었다. 까먹고 있다가 기록해두자는 차원에서 적어봄 ㅎㅎ


신고
크리에이티브 커먼즈 라이선스
Creative Commons License

지난 5년간 10월 강우량 시각화하기

올해 10월 날씨는 개인적으로 매우 중요하다. 특히 토요일의 날씨는 매우매우 중요하다!

그래서 2015년 10월 토요일에 해당하는 날짜의 과년도(2010년~2014년) 기상이 어떠했는지 알아보기로 했다.

데이터를 들여다보는 일이 내 직업인데, 나는 내 일상에서 데이터를 면밀하게 보고 있는지 돌이켜보면서.. 그려봤다.

네이트 실버 말에 따르면 '확률적'으로 생각하는 것이 중요하다고 한다.

다른 문장들은 잘 읽히다가 '확률적으로 생각한다'는 것이 도대체 어떻게 생각하는 것인지 아직 피부에 와닿지는 않는다.

이런식으로 한장 두장 그려가다보면 조금이나마 느낌으로 알수 있을까? 아무튼 아래는 간단하게 그려본 내용들이다.


우선 기상청에 접속해서 테이블로 볼 수 있는 다양한 데이터들을 긁었다.

긁은 후 간단히 피벗으로 '강우량'만 골라서 테이블을 요약했다. 셀 안의 수치들은 해당일자에 서울에서 관측된 강우량이다.

수치 위에 간단히 히트맵을 올렸다. 옅은 녹색이면 맑은날, 푸른색을 띌수록 강우량이 많았던 날이다.

중요한 것은 올해이니, 2015년 토요일과 일요일에 해당하는 3,4일~31일에는 별도로 표기했다.

히트맵을 보니 지난 5년간 10월은 대개의 경우 맑았다. 

다만 2012년 10월 22일과 27일에는 비가 좀 내렸던 것 같다.


중요한 것은 많이 오냐, 적게 오냐의 이슈가 아니다.

그냥 한 방울이라도 내리면 무조건 안좋은거다. 1mm라도 내렸으면 모두 2진법으로 표기했다. 

아래는 0-1로 변환하여 그린 히트맵이다.

올해 10월 일요일에 해당하는 날짜 중 18일과 25일에는 지난 5년간 단 한차례도 비가 내린적은 없다.


요즘 무슨 일을 하면서 살아야 행복할까 오며가며 고민하는 때가 있다.

달콤한 일을 좇는다는 것이 나도 모르게 조그마한 땅에 울타리를 박는 것은 아닌지 의심하고 걱정하며 산다.

아무튼 며칠전에 테이블로 정리해서 프린트하고 형광펜 들고 색칠하다가, 오랜만에 엑셀을 켜고 색칠해봤다.

이런 일상을 자주 올려볼까 싶지만... 아마 또 3개월 뒤에 아 그랬었지~ 하겠구나 생각한다.ㅎㅎ

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

Tableau: The 3-Minute Win Challenge

작년(2013년) 12월에 Tableau Software에서 The 3-Minute Win Challenge를 진행하였다.

타블로를 이용하여 3분 안에 데이터시각화를 완성하는(대부분 대시보드 형태로) 게임이었다.

게임규칙을 살펴보면 다음과 같다.

What are the rules?

  • The video must be no more than 3 minutes long.
  • Your dashboard must start with an empty canvas. However, your data can already be loaded in.
  • No fast-forwarding or jump cuts in the video. This is real-time or bust.
  • In 3 minutes or less, build a useful data dashboard from scratch.

전세계에서 많은 유저들이 참여하여 그 기록을 유튜브에 남겨놓았다.

많은 유저들이 지도를 활용하고 있었다는 점이 흥미로움 ㅎㅎ

유튜브에서 '3 min win tableau'를 검색하면 여러 동영상을 볼 수 있다.

그 중 재밌게 봤던 몇 편을 공유한다.





신고
크리에이티브 커먼즈 라이선스
Creative Commons License

[Tableau] 지하철2호선 시간대별 승하차인원


최근 데이터시각화에 널리 쓰이고 있는 소프트웨어인 타블로(Tableau)를 이용한 지하철2호선 승하차인원 차트이다.

요즘 몇몇 언론사에서 보도용으로 사용하는 것도 몇차례 본 적이 있다.

올해 초에 사용방법 익히려고 한번 만들어 본 뒤, 실제로 타블로로 작업한 것은 없었다. 앞으로 좀 더 적극적으로 사용해보겠지만 현재로선 손이 갈 일이 많지는 않다 ㅎㅎ

첫번째는 엑셀만으로도 차트를 그리는데 어려움이 많지가 않고, 더 손에 익기도 한 점

둘째는 데이터 편집하는 것을 엑셀이나 다른 프로그램에서 작업해 오는게 훨씬 편하다는 점

셋째도 결국 엑셀 때문인데..아무튼 아직은 엑셀로 작업하는게 편해서 그런듯

타블로의 장점은

인터랙티브 결과물을 쉽게 만들수 있어서 데이터를 스크린하기에 매우 편하다는 점

범용성이 뛰어나고, 기본적인 색감이나 디자인이 꽤 괜찮은 편이다

파일양식에 제한받지 않다보니 txt, csv 양식으로도 특별한 가공없이 바로 사용할 수 있다.

다만 지도를 사용하기에는 조금 불편하다. 미국은 편할런지 모르겠지만 한국에서는 영..

위에 소개된 차트는 다운로드를 눌러서, 데스크탑에 타블로 퍼블릭 버전만 설치되어 있어도 누구든 직접 편집해볼 수 있다.

아래는 Tableau Public 8.1 소개 동영상..


신고
크리에이티브 커먼즈 라이선스
Creative Commons License

[Interactive map] 2012 대선지도

이번 FOSS4G 행사 때와 매경닷컴 인포그래픽 세미나에서 소개했던 인터랙티브 맵.

선거관리위원회가 공식적으로 발표한 데이터에 기반하여 전국 1만3천여개 투표소를 맵핑하였다.

어떻게 알게되었는지 잡지에 소개된 적은 있었지만.. 페이스북이나 카톡으로 공유한것 말고는 공개해본 적은 없었던 것 같다.

올 2월에 만들었으니 벌써 9개월이 지났는데, 다음 작업을 기약하며 업로드

다음부터는 좀 더 메시지가 분명하고 분석과정이 드러나는 작업이면 좋겠다.

큰 화면으로 보려면 여기를 클릭

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

수학의 미 (Beauty of mathematics)

고3 때 수능이 끝난뒤, 논술 가르쳐주시던 선생님이 '난 수학은 예술이라 생각한다'고 하셨던 말씀이 생각난다..

Betrand Russell: "Mathematics, rightly viewed, possesses not only truth, but supreme beauty — a beauty cold and austere, without the gorgeous trappings of painting or music." Yann Pineill and Nicolas Lefaucheux demonstrate in the video above. An equation appears on the left, a diagram in the middle, and the real-life version on the right.

출처: Flowingdata.com

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

[2013 인포그래픽 세미나] 주목 받는 인포그래픽 제작을 위한 실무세미나

이미 하루가 지났지만... 데이터시각화(의사결정을 위한 인포맵핑) 발표했습니다 :)

주목받는 인포그래픽 제작을 위한 실무세미나

프로그램 안내

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

[google map] 우리나라 대표지역축제

맵핑에 사용된 데이터는 문화관광부에서 발간하는 연도별 관광동향에 관한 연차보고서를 참조하였다.
PDF문서를 통해 구할수도 있고, 관광지식정보시스템에 접속하여 구할 수도 있다.
문화광광부에서는 연도별로 30~50개 정도의 지역축제를 선정하는데, 이번에 맵핑한 17개 지역축제는 2007년부터 2012년까지 6년간 한차례도 빠짐없이 선정된 축제들이다.
부산자갈치축제에 매년 200만에 가까운 인파가 몰려 다른 축제와 규모차이가 크다. 때문에 인포윈도우의 막대그래프가 예쁘지는 않다 ㅎㅎ
가을에 열리는 축제들도 있으니 참고하시면 좋을듯! 아쉽게도 자라섬재즈페스티벌은 끝이 났지만 :)
인포윈도우에서 이미지를 클릭하면 해당 지역축제의 공식홈페이지로 이동한다.


신고
크리에이티브 커먼즈 라이선스
Creative Commons License

[워크샵 안내] 바쁜 우리들을 위한 데이터시각화 4기: 데이터시각화로 가을축제 즐기기

아래 링크를 클릭하면 디노마드 페이지로 이동합니다

http://dnomade.com/shop/m_mall_detail.php?ps_ctid=02000000&ps_goid=1198

데이타웹플-완성1.png

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

+ Recent posts