본문 바로가기

Function

OD 시각화 2 : 전국 인구 순이동

앞의 글에서 여러가지 사례를 들어 OD 시각화에서 고민했던 점들을 썼다면, 이번에는 전국 인구 순이동 시각화를 조작해보면서 설명해보겠다. 

 

앞의 글이란 이것

 

OD 시각화 1 : 여러가지 시도

지도 위에 데이터를 표현할 때 아주 까다로운 대상 중 하나는 OD 데이터다. Origin-Destination 데이터는 지도 위의 두 지점을 선으로 이어야 한다. 노드와 링크가 있는 추상공간 위의 네트워크 시각화

www.vw-lab.com

그리고 여기서 계속 다루게 될 "전국 시군구간 인구 순이동"은 조금 밑에서 소개하기로 하고, 일단 첫 시도로 거슬러 올라가보겠다.

 

 

 

첫 시도와 표현의 규칙들

 

 

이 작업의 출발은 2017년이었다.

대구MBC에서 제작하는 기획프로그램에 짧게 삽입될 목적이었는데, 요청사항은 '인구이동 데이터로 대구경북지역의 고령화를 보여달라'는 것이었다.

 

이런 작업은 당연히 먼저 숫자를 계산해봐야 한다. 

데이터를 탐색할 때 양이 그리 많지 않을때는 엑셀의 조건부 서식을 즐겨쓰는 편이다. 재현이 어렵다는 단점은 있지만....... 어쨌든 적은 양을 빠르게 계산해서 뭔가를 볼 때 좋다.

 

숫자를 먼저 계산해보는 이유는, 실제로 그러하지 않은 것이 시각화에서 그러하게 보일리 없기 때문이다. 숫자에서 아주 미미하게 드러난다면 그림으로 그려도 당연히 잘 안보인다. y축을 마구 확대해서 이런 내용들을 억지로 표현하다보면 '정크차트'의 범주로 평가되기 쉽다. 이 경우는 5년간의 수치들로 계산해보니 어느정도 확실한 내용들이 보였다.

 

전입에서 전출을 뺀 순이동을 보여주기로 했는데, 문제는 연령 정보를 드러내는 방식이었다. 그냥 순이동량으로는 '고령화'가 보일리 없었기 때문이다. 그렇다고 짧은 시간에 연령별 순이동을 하나씩 보여줄 수도 없고... 그래서 40세를 기준으로 그보다 많거나 적은 연령을 구분해보기로 했다. (사실 고민은 좀 더 오래했던것 같은데 몇 해가 지나다보니 무슨 고민을 했는지 잘 기억이 나지 않는다.)

 

그런데 문제가 있었다. 순이동의 경우 드나든 인구를 빼서 몇 명이 전입인지 전출인지는 말할 수 있는데, 나이의 경우에는 단순하게 설명할 수 없었다. 아래와 같은 경우다.

 

위의 그림처럼, 여러 나이의 사람들이 드나들었을 때, 그래서 결국 그 지역의 나이가 어떻게 되었는지 판단할 수 있는 기준이 필요했다.

 

 

어느정도의 시행착오를 거친 후 아래와 같이 정리했다.

계산이 다소 복잡해 보이지만, 결국 드나든 사람들의 나이를 한 지역 기준으로 더하고 뺐다. 40세보다 젊은 사람이 유출되면 그 지역은 나이가 들게 된 것이고, 40세보다 나이많은 사람이 유출되면 그 지역은 나이가 젊어진 것이라 판단했다. 반대로 유입의 경우는 40세 이상이 유입되면 그 지역이 나이가 들게 된것이고, 40세 미만이 유입되면 젊어진 것이라고 규칙을 정한 것이다. 연령은 고스란히 점수화 되어 결과값을 갖는다. 

 

기준은 40세로 했다. 처음에는 대구경북 지역의 인구 순유입 순유출이 그 지점에서 달라져서 그렇기도 했지만, 전국 인구의 평균 나이에 근접한 수치였는데, 십의 자리에서 끊기는 단순한 숫자가 설명하기에 명료하다고 판단해서 그랬다. 다르게 표현하자면,  '평균나이로 해야 한다'는데 뚜렷한 근거를 마련하기가 힘들었기 때문이다.

 

몇 세의 나이를 기준으로 할 것인가에 대해서는 여러가지 이견이 있을 수 있다. 혹은 시각화의 목적에 따라 달라질 수 있다. 그리고 평균 나이를 기준으로 할 경우에도, 중간값이 좋은지 산술평균값이 좋은지 좀 더 통계적으로 엄밀할 필요가 있을텐데, 사실 그 부분은 전문분야가 아니라 잘 모르겠다.

그 밖에도 여러 해의 순이동을 표현할 때 일괄적으로 40세로 할 것인지, 각 해의 평균 나이로 할 것인지 선택해야 하는데, 여기서는 일괄적으로 40세로 했다. 이 점은 여기에서처럼 '퉁 쳐서 그냥 40세를 기준!' 이라고 정할 때도 좀 많이 고민이 된 부분이다. 그림의 결과가 판이하게 달라졌기 때문이다.

 

위 그림에서 얻은 결과값인 -23을 전입 전출 차이인 1로도 나눠보고(물론 하필 이 예에서 1로 나누게 되었지만 실제 사례에서는 대부분 차이값이 1이 아니므로...) 전체 이동 수인 5로도 나눠보는 등 여러가지 상식적인 선에서의 계산을 공식상에 추가해봤었는데, 실제 순이동 수치의 분포와 시각화된 결과는 -23점을 그대로 사용할 때가 가장 비슷했다.

 

 

 

그래서 결과를 다시 보면(위와 같은 그림) 아래와 같다.

연령점수가 감소한 이동은 파란색으로, 증가한 이동은 붉은색으로 표현했다. 

경북 지역 시군구는 이곳 저곳에서 40세 이상이 유입되고, 대구 지역에서 수도권이나 천안, 부산 울산 등으로 40세보다 젊은 사람들이 이동했다는 사실이 확실하게 보인다. 위의 엑셀 조건부 서식에서 사용한 색상과는 의미가 약간 다르지만, 엑셀에서 만들어본 결과가 그대로 지도 위에 나타났다.

 

처음에는 연령점수가 0에 가까우면 흰색에 가깝게 하고 크거나 작을수록 푸른색이나 붉은색을 점점 진하게 표현되도록 공식을 만들었다. 그런데 결국 두 색이 겹치거나 한 색상이 계속 누적되면서 흰 색이 되어버렸으므로 그다지 의미없다는 사실을 깨달았다.

 

선이 출발할 때부터 색상과 진하기를 그대로 갖게 되면 여기저기서 떡이 되어버렸다. 그래서 출발할 때는 그레이스케일로 조금 연하게 두고 도착지에 가까울수록 색상 정보가 드러나도록 했다.

 

당시의 시행착오가 모두 남아있지는 않지만, 예를 들어 출발지의 색상을 조금만 밝게 해도 아래처럼 되어버린다. 대구 부분이 좀 더 하얗게 되어 메시지가 불명확해지고 서울로 가는 선들이 뭉쳐져서 잘 구분되지 않는다.

그리고, 시군구간의 '순이동'이므로 모든 인구이동을 표시했을 때와는 달리 두 시군구 사이에는 하나의 선만 그어지게 된다. 그래도 직선이 아닌 시계방향의 곡선으로 표시했다. 이유는 지난 글에서 설명한 바 있다.

 

 

대구경북만큼 결과물의 최적 색상을 다듬지는 못했지만, 전국을 그려봐도 우리가 알고 있는 결과들이 그대로 지도 위에 드러났다. 2012-2016년의 5개년간의 시군구간 인구 순이동이다.

수도권쪽은 푸른 색이 많은데, 사실 잘 안보인다. 이 지도에서 확실히 볼 수 있는 점은 지방의 각 시군구에 고령의 인구들이 유입되고 있다는 사실이다. 강원의 어떤 지역들은 수도권에서 그렇게 이동하고, 경남의 어떤 지역들은 북쪽과 남쪽 모두로부터 고령의 인구가 유입되고 있었다.

 

이 전국 시군구간 인구 순이동은 지난 글에 있었던, 그러니까 처음 시도했던 인구 이동 그림보다 인구 불균형에 대한 정보를 더 잘 보여주고 있다. 이후로 시간이 조금씩 날 때마다 OD 시각화를 연습하는 대상으로 삼고 이것저것 해보게 되었다.

 

 

전국 인구 순이동 웹 버젼

 

이 인구이동 시리즈는 그 동안 C++/OpenGL로 작업하다가, 그래도 내용상으로 좀 더 공유할 가치가 있다는 생각이 들어 온라인 버젼으로 옮겨보았다. webGL에는 지오메트리 셰이더가 없어서 생각보다 좀 더 고생을 했는데, 여튼 비슷한 수준의 결과물로 바꿔볼 수 있었다.

 

아래의 링크에서 직접 조작해 볼 수 있다. 휴대폰에서는 안된다. PC에서만 가능하다.

 

 

Net Domestic Migration of Korea

 

vuski.github.io

 

접속하면 기본 옵션이 100명 이상 순이동으로 되어 있는데, 우선 아래 방향의 화살표를 눌러서 0명 이상 순이동으로 바꿔보자. 그리고 a 버튼을 누르고 있으면, 화살표의 두께 감쇄 정도가 변화하면서 출발 지점의 색상이 드러난다. 이제 아래 그림과 같아졌다면 설명을 따라갈 준비가 된 것이다. (그런데 따라해보기 방식으로 설명하지는 않을 것이므로 굳이 아래처럼 조정하지는 않아도 된다)

 

위에서 설명했던 초기 버젼과 큰 차이라면, 하나의 선이 이동하면서 색상이 변한다는 점이다. 선의 색상은 두 종류다. 출발할 때는 붉은색이었다가 도착할 때 푸른색으로 되는 선, 이것은 젊은 인구(연령 점수가 낮은 순이동)가 다른 지역으로 이동하는 경우다. 이동 진행 정도에 다라 푸른색에서 붉은색으로 변하는 경우는 고령 인구가 다른 지역으로 이동하는 경우다. 모든 이동은 시계방향이다.

 

 

색상 규칙을 변경한 이유

 

색상 전략을 바꾼 이유는 이러하다.

대구경북의 순이동을 그렸을 때는 연한 회색에서 모두 시작하고 연령 점수에 따라 푸른색과 붉은색으로 변하도록 했었다. 그런데 이 경우는 도착지(전입지)에 대한 정보는 있으나 출발지(전출지)를 중심으로 보면 아무런 정보를 주지 못했다. 여러 이동들이 섞여 있을 때 더욱 그러했다.

 

 

그래서 출발지부터 색상을 칠해보기로 했다. 그런데 문제가 발생했다. 

아래의 그림을 보자.

 

2001년 구미시의 경우 수도권으로 젊은 사람들이 순이동을 했으므로 출발부터 도착까지 선들을 모두 파란색으로 칠했다. 그런데 이 경우 구미시는 젊은 사람들이 빠져나갔으므로 상대적으로 고령화가 되었을텐데, 막상 구미시에 집중해서 보면 온통 푸른색이다. 어떤 푸른색은 유입선이고 어떤 푸른색은 유출선인데, 구미시 주변이 모두 푸른색이니 지도를 읽는데 약간 혼선이 왔다. 예를 들어 모든 지역으로 젊은 인구가 유출되어 고령화되었는데, 그 지역 주변이 온통 푸른색으로 표현되면 직관적으로 정보를 습득하는데 혼선이 올 것 같았다.

 

그래서 젊은 인구가 빠져 나갔을 때, 그 지역은 고령화된 것이므로 유출지 부근은 붉은색으로 표현하기로 전략을 바꾸었다. 그래서 위의 그림을 아래와 같이 다시 그릴 수 있었다.

대표

이제 다시 구미시를 보면, 수도권 지역으로 뻗어나가는 붉은선들이 보인다. 즉, 이 그림을 보는 사람들은 구미시를 보면서, 수도권 지역에 대해 이 지역이 고령화된 움직임을 보였다는 것을 알 수 있다. 좀 더 단순히 표현해보자면, 어떤 지역을 보았을 때 그 지역 주변에 유입이든 유출이든 붉은색이 많다면 고령화되었을 가능성이 크고, 푸른색이 많다면 젊어졌을 가능성이 크다. (정확한 내용은 숫자를 세어봐야 알 수 있으므로 '가능성이 크다'고 표현하였다)

 

 

2000년대 초반에 나타났던 기이한 이동의 정체는

 

이동선의 시작 부분 색상을 변경한 내용에 대해 언급했으니, 일단 그 부분을 좀 더 살펴보자.

위 아래 화살표를 조정해서 20명 이상 순이동만 표현되도록 바꿔보자. a키를 몇번 눌러서 이동선의 시작부터 잘 보이도록 해보자. 2002년부터 2004년까지의 이동을 전국 스케일에서 보면 전라북도 정읍과 남원 등지에 약간 이상한 이동이 보인다.

 

2002년에는 젊은 인구들이 수도권 지역으로 빠져나갔다가 2003년에는 젊은 인구들이 유입된다. 그런데 2004년에는 다시 유출된다. 아니, 어떻게 이동이 이렇게 극적으로 한해 한해 변할 수 있다는 말인가.

 

혹시나 데이터가 잘못 계산되었을까봐 직접 숫자를 집계해봤다. 그랬더니!

 

2003년과 2004년을 월별로 집계해보니 위와 같은 말도 안되는 이동이 드러났다. 12월에 23000명이 어디에선가 와서 이듬해 1~3월에 걸쳐 다시 빠져나갔다. 

 

이리저리 찾다보니 당시의 정읍 신문에 그 이유가 남아 있었다.

 

 

지방교부세 때문에 연말에 억지로 전입을 시도한 것이다. 인구가 줄어가니 15만명을 유지하기 위해 방학때를 이용하여 미취학 아동이나 초등학생들을 정읍으로 전입시켜 인구를 채운 후, 개학하기전에 다시 돌려보냈던 것 같다. 물론 서류상으로겠지.

 

그래서 전입전출 데이터를 보면, 저렇게 어린 나이의 아이들만 정읍시로 전입을 한다. 일반적으로 거의 없는 경우다.

 

그러다가 징계를 받거나 경고를 받은 것 같다. 2004년부터는 그런 일을 하지 않은 것 같다. 어쨌든 이러한 인구 유지에 대한 노력은 통계청 공식 통계에도 흔적으로 남아 있다. 정확히 말하자면, 이 전입전출 데이터 자체가 공식 통계에 사용되는 자료이고, 정읍시 주민등록 인구를 보면 아래와 같은 기이한 봉우리가 보인다.

 

즉, 실제 인구는 아마도 90년대 말부터 꾸준히 줄어들고 있었던 것 같다.

이러한 역사(?)는 특정 시군구의 일탈로만 보기는 어렵다. 지방 인구 고령화와 지방 소멸의 문제가 요새 특히 더 이슈가 되고 있지만 이미 문제는 1990년대 말부터 심각해졌던 것 같다. 

 

 

 

20년 사이 전반적인 이동 경향의 변화

 

 

이번에는 대략 10명 이상의 순이동만 보도록 위아래 화살표 키보드를 눌러서 조정하고 z키와 x키로 2001년과 2020년을 번갈아 바꿔보자. 20년 사이에 전국적인 이동의 경향이 어떻게 변했는지 비교해 볼 수 있다.

2001년에는 강원도와 경북 시군구에서 수도권으로 젊은 인구들이 많이 이동했다면, 2020년에는 그 지역들로 고령의 인구들이 이동하고 있다. 특히 강원도 쪽으로 많이 이동한다. 그리고 2001년에는 대구, 울산, 원주, 구미 등으로 젊은 인구들이 많이 이동했는데, 2020년에는 별로 그렇지 않다. 약간 과장하자면 젊은 인구는 이제 수도권으로만 몰리는 것 같다.

 

2001년에 전북지방으로 젊은 인구들이 유입되는 것처럼 보이는데, 위에서 언급했던 지방교부세 관련 이동일 가능성이 크다. 2001년의 강원도 영월도 마찬가지다.

 

2001년에 비해 2020년에 제주도로 가는 사람들이 늘어났다. 푸른색과 붉은색이 섞여 있는데 푸른색이 좀 더 많아보인다. 아직은 젊은 사람들이 좀 더 가는 것 같다. 제주도로의 이동은 2013년 경부터 본격적으로 시작된 듯하다.

2014년에 보면 제주시로 젊은 인구들이 많이 간다. 이미 뉴스에서 많이 다루어졌던 현상이다.

 

 

 

이번에는 도착지 중심으로 보기

 

이동선을 처음부터 끝까지 다 그리면, 지방의 몇몇 도시들을 보는데는 좋지만 수도권은 하얗게 날아간다. 특히 이동 거리가 긴 선들이 영향을 많이 주는데, 부산에서 서울로 올라오는 선들과 대전,세종,천안,수원의 선들이 모두 겹치면서 서울~대전 구간이 거의 식별되지 않는다. 이런저런 시도를 했으나 한번에 만족시키는 해법은 찾기 어려워 옵션을 만들었다.

 

a키와 s키를 눌러 이동선의 두께 감쇄율을 조절할 수 있다. 결과적으로만 말한다면 s키를 여러번 누르면 도착지점만 남고 시작 부분이 거의 사라지고, a키를 누르면 다시 시작부분부터 살아난다.

 

그림으로 보자.

 

화살표의 길이 자체를 줄인다기 보다는 시작과 중간부분을 홀쭉하게 만드는 방식이다. 마지막 화살표 머리 부분은 그대로 살렸다.

 

수도권 지역을 확대해서 이 변화를 적용시켜보면 아래처럼 볼 수 있다.

 

두께 감쇄율 조정만으로는 부족해서 문턱값(threshold) 역시 올렸다. 문턱값은 위아래 화살표로 조정할 수 있다.

 

 

이제 아래와 같은 그림을 볼 수 있다.

서울특별시 내부의 이동들도 어느정도 식별이 된다. 2020년의 경우 마포, 서대문, 강남, 송파, 강동구로는 젊은 사람들이 몰리고, 성북, 강북, 도봉, 노원구 등 동북쪽으로는 고연령층이 주로 이동을 했다. 관악구로는 지방에서 젊은 인구들이 많이 이동을 했는데, 이러한 변화들은 해마다 조금씩 달라진다. 수도권의 순이동은 아파트 대단지 입주에 크게 영향을 받는다.

 

 

 

 

문턱값을 최대한 낮춰서 0명 이상의 순이동 모두를 보고, 두께 감쇄율만 급격히 낮춰서 지방의 시군구를 보면 상대적으로 어떤 방향과 어떤 관계를 맺는지 볼 수도 있다.

예를 들어 위의 그림을 보면, 원주시의 경우 서울 경기 쪽에서는 고령자가 이동했고, 더 동쪽에서는 젊은 인구가 이동했음을 알 수 있다. 홍천군은 더 동쪽에서는 그다지 많이 오지 않고 서남쪽에서 주로 젊은 인구가 이동했음이 보인다. 서울쪽과의 관계는 원주와 비슷한 사정이 된다.

감쇄율을 급격히 낮췄으므로 화면에는 거의 도착지 중심으로만 표현되어 있다는 점을 잊지 말아야 한다. 

 

 

 

좌우 화살표 키로 이동선 길이 조정

 

좌우 화살표키는 화살표 선 전체를 어느정도까지 진행시킬 것인지 조정하는데 쓰인다.

지도상의 절대적 길이가 아니라 자기 자신이 지닌 크기의 비율대로 변화하므로, 멀리서 오는 긴 선이 더 빨리 줄어들게 된다. 진행정도를 조정하는 좌우 화살표키는 여러 경우에 응용해서 사용할 수 있는데, 멀리서 오는 선들을 약간 걷어내서 근거리 이동을 가려보고 싶을 때도 사용할 수도 있다. 선들이 겹쳐 있을 때 조금씩 움직여보면 무엇이 무엇인지 좀 더 식별이 잘 된다.

 

 

v키로 특정 시군구의 이동만 표시

 

아무리 그래도 이동선들이 여러개 겹치면 그림은 어쩔 수 없이 복잡해진다. v 키를 누르면 특정 시군구 중심으로만 볼 수 있다.

 

선들이 많이 줄어들게 되므로 여기에는 순이동 수까지 추가했다.

 

 

 

역시 좌우 화살표 키로 진행정도를 변화시킬 수 있다.

어디서 오고 어디로 가는지 좀 더 특징적으로 관찰할 수 있게 된다.

 

 

 

색상값 설정에 대한 고민

 

이 시각화는 깃헙 페이지에 올려놓았으므로, 기본적으로 깃헙에 코드가 공개된다.

 

vuski/netDomesticMigrationSouthKorea

Contribute to vuski/netDomesticMigrationSouthKorea development by creating an account on GitHub.

github.com

위에서 소스코드를 내려받은 후, 여기서 설명하는 값들을 자신의 로컬pc에서 직접 수정해 볼 수 있다.

 

이 시각화에 쓰인 데이터는 다음과 같은 5개의 속성으로 정리했다. 

 

첫 번째 열은 연도번호. 1이 2001년, 20이 2020년이다. 두번째와 세번째는 각각 전출과 전입 시군구 코드다. 네번째는 순이동량, 마지막이 위에서 설명했던 점수 값이다.  아래에 음영처리된 -257 등, 기준 연령인 40세와의 차이값들의 누적 합이다.

 

이 점수는 10000이 넘는 경우도 있다. 그래서 처음은 점수값에 따라 화살표의 색상을 아래와 같이 다르게 해보려고 했다.

도착(전입)지의 색상 기준으로 말하자면, 음의 방향으로 값이 커질수록 푸른색, 양의 방향으로 값이 커질수록 붉은색, 0이면 흰색으로 표시하려고 했다. 그런데 이 선들이 겹치면서 문제가 발생했다.

 

위의 그림처럼, 연령 점수가 0에 가까울 때 설정해 둔 흰색과, 선들이 겹치면서 만들어진 흰색이 뒤섞여버려 그림의 의미가 모호해진다는 문제였다.

 

 

 

 

문턱값을 낮추면 더 심해졌다. 온통 흰색투성이가 되어버려서 색상 값의 의미가 무색해져버렸다.

 

 

 

 

OpenGL 이나 WebGL 같은 경우 개체들의 색상이 겹치면서 덧칠해질 때 어떻게 두 색상값을 다룰 것인지 설정할 수 있다. 

여기서는 다음과 같이 두었다.

 

gl.blendFunc(gl.SRC_ALPHAgl.ONE);

 

두 개의 매개변수값을 blendFunc 에 태워 보내는데, 위 매개변수 값의 의미는, 원래 있던 색상의 RGB값에, 새롭게 칠해지는 색상의 RGB값에 새롭게 칠해지는 색상의 ALPHA값을 곱해서 더하라는 의미다. red 채널만으로 말하자면 다음과 같다.

 

결과 색상의 red 값 = 원래 픽셀이 가지고 있던 red 값 + (새롭게 덧칠해지는 색상의 red 값 * 새롭게 덧칠해지는 색상의 alpha 값)

 

따라서 원래 색상이 무엇이든, RGB 값 모두를 1~255 사이에서 조금씩이라도 갖고 있다면 이 색상이 계속 누적되다보면 결국 (255, 255, 255)값에 도달하게 되여 흰색이 되어버린다.

 

위에서는 푸른색을 (0,116,231)로, 붉은색을 (239,0,105)로, 흰 색을 (255,255,255)로 놓고 연령점수에 따라 mix시킴으로써 그라데이션 상에서 표현되도록 했다. 따라서 블렌딩 됨으로써 조금이라도 푸른색에 Red 값이 더해지거나 붉은색에 Green이 더해지는 순간, 무수히 많은 선들이 겹치면 그저 흰색으로 뒤범벅 될 수 밖에 없는 결과를 가져온다.

 

사실 이 블렌딩 문제는 아직 깔끔하게 해결하지 못했다.

 

코드상에는 변수를 조정하던 중간 실험값이 그대로 들어가 있는데, 미세한 부분을 생략하고 대략적으로 설명한다면, 연령 점수에 따른 그라데이션 효과는 일단 없애버렸다. 푸른색에서 red값을 없애서 푸른색들만 겹칠때는 (0,255,255)색상이 드러나도록 하고, 붉은색에서 green 값을 없애서 붉은색들만 겹칠 때에는 (255,0,255) 가 되도록 했다. 그림에서 흰 색으로 보이는 부분이 있다면, 그 부분은 붉은색 화살표와 푸른색 화살표가 겹쳐있다고 보면 된다.

 

 

 

아래 그림에서 푸른색들만 겹친 부분과 붉은색이 하나 더 겹친 부분을 비교해볼 수 있다.

 

 

 

 

 

아래 그림에서는 붉은색들만 겹친 부분과 푸른색이 같이 겹친 곳을 비교해볼 수 있다.

 

 

 

 

중간 시행착오 과정에서는 아래처럼 흰색 대신 좀 더 어두운 색을 연령점수 0의 색상으로 설정해보기도 했다.

어떤 의미에서는 나쁘지 않은데, 어느 정도의 값부터 푸른색, 붉은색이 좀 더 각각의 색상을 드러나도록 하는가의 문제가 남아 있었다. 어쨌든 이 부분은 아직 고민중이다. 이런저런 시도를 하면서 결과를 비교해보는 중이고, 지금 현재는 연령점수가 10이든 1000이든 색상은 아주 거의 비슷한 붉은색이 된다.

 

 

 

 

기준 인구를 무엇으로 정할 것인가

 

이제 마지막으로 앞에서 잠시 언급했던 기준 인구의 문제를 다뤄보자.

 

앞서 '퉁쳐서 40세'를 기준으로 저연령과 고연령을 가르고 시각화의 색상을 정했다고 설명했다.

이번에는 그러면 각 연도의 전국 인구 중위값을 각각 연령 판별의 기준으로 삼아 점수를 다시 계산해보자. 아래 두 그림을 비교해보자.

 

 

위 그림은 40세를 기준으로 계산한 2001년도

 

 

 

위 그림은 2001년 중위 연령인 32세를 기준으로 계산한 2001년 순이동.

 

알다시피 우리나라 인구가 급격하게 고령화 되고 있는데, 2001년의 중위 연령은 32세, 2020년은 44세다. (소수점 이하 반올림) 즉, 2001년에는 자신이 32세만 되어도 우리나라 인구의 절반이 자신보다 어렸는데, 2020년에 와서는 44세가 되어야 전국 인구가 한 줄로 늘어섰을 때 가운데에 있게 된다는 말이다. 2020년의 32세는 상대적으로 한창 어린 나이가 되어버렸다.

 

따라서, 40세를 기준으로 2001년의 인구를 시각화하면 남양주, 광주 용인 등으로 젊은 사람들이 빠져나간 것처럼 보인다. 그런데 기준 값을 당시의 중위 연령 32세로 바꾸고 다시 점수를 계산해서 그려보면 아래와 같은 그림이 된다. 남양주, 광주, 용인으로의 이동이 붉은 색이 되었다. 고령의 인구, 즉 32세보다 고령의 인구가 상대적으로 많이 이동을 했기 때문이다.

 

둘 중에 어떤 그림이 맞을까? 맞고 틀리다는 표현이 극단적이라면, 어떤 그림이 당시의 사회 현상이나 사회 문제를 더 잘 설명해줄까?

 

솔직히, 잘 모르겠다.

 

논의를 단순화하기 위해 그 세 지역으로 35세가 이동했다고 가정해보자. 35세는 32세 기준으로 확실히 고령이라고 할 수 있지만, 신체적인 나이는 35세다. 육체적 노동의 능력이나 사무직의 근무 피로도 측면에서 2020년의 35세와 2001년의 35세는 크게 다르지 않다. 그러므로 어떤 사람들이 그 지역으로 이동해서 할 수 있는 활동이나 사회적 활력에 기여할 수 있는 정도는 절대적 나이로 평가하는 것이 현실적일 수 있다. 그렇다면 2001년이나 2020년이나 동일한 나이 기준, 즉 40세든 41세든 일률적으로 적용하는게 옳다. 즉,  둘 중 위의 그림을 택해서 "2001년에는 서울 주변으로도 젊은 사람들이 이동했다"고 해석하는게 더 나을 것 같다.

 

그런데 또 한편으로 사회적 나이를 생각하면 아래 그림이 맞는 것 같기도 하다. 혼인을 해서 자녀를 낳고 집을 구하는 것과 같은 라이프사이클을 생각해보면 당시의 32세와 지금의 44세가 비슷한 단계에 있을 수 있다. 그렇다면 당시의 중위 연령 기준으로 점수를 산정한 아래 그림이 더 어울린다. "2001년에도 2020년처럼 혼인 후 가정을 이루는 시기에는 당시에 조성되던 용인 수지 아파트 단지 등 서울 주변으로 많이 빠져나갔다."라고 해석할 수 있다는 말이다.

 

상황에 따라 다르다는 말은 아니다. 둘 중에 그래도 어떤게 좀 더 우리 사회를 잘 설명해주는 그림이 있을 것 같은데, 이 문제를 깊게 연구한 것은 아니라 판단이 잘 서지 않는다. 일단은 40세를 기준으로 점수를 계산한 파일로 구동되도록 했으며, 중위연령으로 계산한 값으로 바꿔보고 싶은 사람은 github에서 파일을 내려받아 직접 고쳐볼 수 있다.

 

 

 

위의 파일을 모두 다운받은 후, 메모장 등에서 index.html 첫 부분을 아래와 같이 고쳐주자.

 

읽어들이는 파일을 netpopumove.js 에서 netpopumove-alt.js로 바꿔주면 된다. 모두 메모장에서 열리므로 내용을 직접 확인해볼 수 있다. 위의 파일이 모두 같은 폴더에 있다면, 수정 후에 index.html을 크롬 등에서 실행시키면 별도의 인터넷 연결 없이도 로컬에서 돌려볼 수 있다.

 

 

맺으며

 

여기까지 20년간 시군구간 순이동 시각화를 매개로 OD시각화에서의 고민과 인구 이동이라는 특수한 대상에서의 표현의 문제를 다뤄보았다. 인구 이동 양상은 지금 우리 사회에서 매우 중요한 문제다. 누군가는 이 글을 읽고 이 데이터에 좀 더 친숙하게 다가갔으면 했다. 기약은 없지만, 이 시각화는 시간날때마다 조금씩 업데이트 해 볼 생각이다.