brunch

You can make anything
by writing

C.S.Lewis

by 김지연 Apr 11. 2022

삐약이 309일 차 - 이게뭐야..?.html

기획재정부 인사 분석 시각화 후기

삐약이란?

도쿄올림픽 시즌, 신유빈 선수와 내가 (살짝) 닮았는데 목소리 톤도 높은 것이 삐약이라는 별명이 아주  어울린다며 다혜 선배가 지어준 별명이다.


올해 가장 많이 한 말은 '내가 뭐라고'다.

내가 뭐라고 뉴스타파 데이터팀에 합류를 하게 되었을까... 내가 뭐라고 시각화를 만들고 있을까... 입사하고 나서 엄청나게 뚝딱댔고, 팀 선배들이 수습 가능할 정도의 작은 사고들을 계속 치면서 지낸 지 어느덧 10개월이 지났다. 시각화 결과물을 만들 때마다 굉장히 고민하면서(고통받으면서) 만들었다. 그 후기를 브런치에 열심히 적어야겠다는 생각은 했지만 자기변명일 것 같아서 적지 못하다가, 이번 시각화는 꽤나 흥미로웠어서 기록을 남겨보려고 한다. (글은 12월에 썼지만, 브런치에 저장해둔 것을 잊고 있다가 이제야 올린다.)


전반부(퇴직 이전)는 윤원 선배가, 후반부(퇴직 이후)는 다혜 선배가 썼다. 데이터는 나 포함 셋이서 n개월 동안 고생하며 정리했다.

https://newstapa.org/article/mdRGk


생키 차트, 어떻게든 그리기

위 기사에는 5개의 그래픽이 들어있다. 특히 생키 차트를 그리면서 고민을 많이 했다. 아래는 기사에 들어간 그래픽이다.

기재부 인사 흐름을 보여주는 생키 차트

안 그래도 읽기 어려운 생키 차트인데, 깔끔한 모양새가 아니다. 기획조정실장에서 차관보로 가거나 차관보에서 국고국장으로 가는 인사이동 때문에 중간에 꼬여있는 듯한 선들도 보인다. 보면 볼수록 익숙한 모양의 생키 차트는 아니지만, 수많은 회의와 끝없는 고민을 바탕으로 만들어진, 내가 아주 애정을 갖고 있는 그래픽이다.


태초에 이런 차트가 있었다.

국장급 인사의 인사이동 흐름을 시각화하기 위해 이런저런 그래프를 그려보다가, 생키가 가장 적합한 그래프 유형일 것이라고 판단했다. 생키를 그리기 위해 데이터도 다 정제하고, R의 networkD3 라이브러리를 이용해서 생키 만드는 코드도 다 짜서 실행했는데...! 저런 모양의 차트가 나왔다. 차트라고 말하기도 이상하다.. (위 그래픽의 파일명은 '이게뭐야..?.html'이다.)

국장, 실장, 차관, 장관, 대통령실 파견, 국회 파견, 명예퇴직, 사외이사, 공공기관장, 유학(고용휴직), 조달청, 관세청 등 그동안 우리가 쌓은 데이터 전부를 한 번에 생키로 그려보니 저런 모양이 나왔다.


저 그래픽의 빌런은 대통령실이었다. 위의 복잡한 그래픽에서 왼쪽 세 번째에 있는 기다란 보라색 막대가 대통령실이다. 직급에 상관없이 대통령실을 오가는 사람들이 너무 많은 탓에 온갖 노드가 엉켜있었다. 일단 중요하지 않은 노드들을 최대한 빼봤다. 그래 봤자 대통령실은 중요한 노드라서 빼고 그릴 수는 없었다.


나름 대통령실을 생키 차트 안에서 깔끔하게 표현해보려는 (실패한) 노력


어느새 회의 시간이 되었고, 선배들에게 저 엉킨 머리카락 같은 생키 차트를 어떻게 해결할지 논의하자고 했다.

선배 : 뭐가 제일 난감해?

나 : 대통령실이요... 빼고 싶어요...

선배 : 그럼 빼자!


생키 차트에서는 기재부 내 인사이동만 그리기로 했다. 사외이사, 공공기관장 등 기재부 퇴직 이후의 이력은 생키가 아니어도 메시지를 전할 수 있다. 그리고 기재부 관료들의 대통령실 파견만 따로 그래픽을 그리기로 했다. 보여주고 싶은 메시지들을 한 번에 그려보겠다는 욕심에 이상한 머리카락 같은 차트를 만들지 말고, 전달하고자 하는 내용을 명료화해서 그에 가장 적절한 차트를 하나씩 만들기로 했다. 덕분에 생키 차트는 훨씬 간단해졌고, 만들어야 할 그래픽은 많아졌다.


국장급, 실장급, 차관급 인사를 하나의 노드로 통일했던 위의 생키와 달리, 각 국장, 실장, 차관이 하나의 노드가 되도록 데이터를 다시 정리해서 생키를 만들었다. networkD3를 이용해서 생키를 그리면, 노드의 위치를 자동으로 설정해준다. 노드를 수직 방향으로는 이동할 수는 있지만 수평 방향으로는 이동할 수 없다.

 인사이동을 시각화하기 위해서는 직급에 따라 노드를 배치해야 했다. 나는 국장급은 가장 왼쪽에 두고 오른쪽에 실장급, 차관, 장관급을 차례로 두고 싶었다. 하지만 networkD3는 세제실 실장을 국장급과 같은 선상에 뒀고, 국고국 국장은 기재부 1차관과 같은 선상에 있었다. 차관보의 위치도 반드시 수정해야 했다.


내가 원하는 위치에 노드로 옮기기 위해서는 당장 d3.js 코딩을 시작해서 생키 차트를 직접 짜거나, 툴을 이용해서 생키를 그리는 방법뿐이었다. R에서는 데이터를 확인하는 작업까지만 가능했다. d3.js를 짤 시간은 부족하니 생키를 그리는 툴을 최대한 찾아봤다.


https://app.rawgraphs.io/

http://sankey-diagram-generator.acquireprocure.com/

두 개의 후보가 있었다. 나에게 필요한 기능은 1. 노드를 원하는 위치로 이동할 수 있고 2. 결과를 svg로 저장하는 것이었다. 둘 다 위의 조건은 충족했다. 그래서 그냥 내가 사용법을 빨리 익힌 the sankey diagram generator을 활용했다. 생키 차트를 계속 만져보면서 이 툴의 단점을 파악했다. 원하는 위치로 노드를 다 이동해놓고, 노드나 엣지를 삭제하거나 색을 수정하면 노드의 위치가 리셋된다.


다행히 작업한 생키를 json 형식으로 저장할 수 있더라. save positions까지 체크하면, 노드의 위치까지 전부 저장된다. 이 기능을 활용해서, 가장 덜 엉켜 보이는 생키 차트를 만들기 위해 노드를 계속 옮겨가며 작업했다.

 

직급에 따라 노드의 색을 달리 하고, 위치도 조정해서 위와 같은 모양을 만들었다. 위치를 깔끔하게 조정하고 싶었다. 마우스 커서로 노드의 위치를 정확하게 옮기거나, 일러스트레이터에서 노드의 위치를 옮기는 것은 번거로워서 json formatter을 활용해서 xPos와 yPos값을 직접 수정했다. 원하는 위치에 노드들이 잘 정렬되고 나면, svg로 저장해서 일러스트레이터에서 후작업했다.


필요한 그래픽을 만들기 위해 잔머리를 열심히 써가며 생키 차트를 만든 과정도 흥미로웠지만, 더 중요한 포인트는 따로 있다고 생각한다. 생키를 그릴 수 있는 데이터를 만들 때, 초반에는 시험삼아 손으로 데이터를 정리했다. 코드를 짜서 모든 과정을 자동화를 하지 않고 중간중간에 수작업으로 데이터를 정리했다는 뜻이다. (직책을 다시 정리해야 해서 초반엔 코드로 짜기 귀찮았다..) 이렇게 했더니 아래와 같은 차트가 만들어졌다.

수작업으로 데이터를 정리한 결과 만들어진 잘못된 차트

잘못된 차트다. 국장급에서 바로 장관으로 올라가는 경우가 이상하다. 공공정책국 국장에서 바로 기재부 장관이 될 수 있나? 사실 차트만 보고 이상하다고 생각하진 못했다. 저런 신기한 경우도 있을 수 있구나하는 의심만 있었다. 그런데 코드를 자동화하고 보니, 다른 차트가 만들어지더라. 시간을 조금 더 투자해서 생키 차트용 데이터를 만드는 코드를 완성한 덕분에 오류를 피할 수 있었다. (정말 다행이다...) 타부처 장관과 기재부 장관을 구분하지 않아서 생긴 오류였다. 이 부분을 고려해서 코드를 다시 짜서 문제를 피해갈 수 있었다.



그 외 시각화

기획재정부 출신 대통령비서실 및 국무조정실 근무 이력

대통령실을 따로 그리는 건 정말 좋은 선택이었다. 대통령실 파견을 한 번 다녀온 기재부 사람들은 정~~말 많았다. 중요한 것은 대통령실을 여러 번 파견 다녀온 사람들이라고 보고, 이 사람들 위주로 차트를 제작했다.

대통령실 파견과 관련된 파트는 윤원 선배(팀장님)가 작성했다. 왼쪽은 윤원 선배가 그린 밑그림이다. 팀장님은 점선은 대통령실 이력, 실선은 국무조정실 이력으로 구분했다. 반면에 차트에서는 국무조정실과 대통령실을 노드의 색으로 구분했다. 대통령비서실은 파란색, 국무조정실은 주황색으로 그렸다. 김동연, 추경호, 최재영, 김철주(아래 4명)가 문재인 정부에서 어떤 역할을 맡았는지도 차트에 '그 외 이력'으로 추가했다.


선배들마다 그래픽을 의뢰하는 방식이 달랐다. 윤원 선배는 이렇게 밑그림을 그리셨고, 기재부 퇴직 이후 파트를 맡은 다혜 선배는 다 쓴 기사를 보여주셨다. 기사를 읽으면서 필요한 그래픽들을 구상했다.


내가 기사를 읽으면서 그린 밑그림과, 완성된 그래픽 3개 중 2개

다혜 선배가 쓴 부분에서는 총 3개의 그래픽을 만들었다. 3-2 그래픽(기재부 및 금융위 산하 전현직 공공기관장)에서 원 하나가 사람 한 명을 뜻하니까, 3-3 그래픽(금융계 재취업 현황)도 원을 활용해서 만들고 싶었다. 아쉽게도 이렇게 원을 연속적으로 그린, dot matrix 같은 그래프는 가독성이 너무 떨어지더라. 3-2 그래픽은 그대로 가고, 3-3 그래픽은 단순하게 막대 차트로 수정했다. 복잡하게 그리지 않아도 내용이 전달된다면, 최대한 간단명료하게 만드는 것이 기사 그래픽에서 중요한 것 같더라. 3-2 그래픽은 가독성을 높이기 위해서 순서를 여러 번 조정하기도 했다.



막대 차트부터 생키 차트까지, 다양한 그래픽을 제작한 기사였다. 초반에는 기재부 직위를 구분하는 것도 벅찼는데, 몇 개월 동안 기재부 인사이동 데이터만 쳐다보니 선배들이 무슨 말을 하는지 이해도 하고 그래픽까지 그릴 수 있었다.


이번 프로젝트 교훈

1. 데이터 정제는 손으로(스프레드시트에서 일일이 수정) 하지 말고, 최대한 코드를 써야 오류를 쉽게 파악할 수 있다.

2. 복잡한 내용은 쪼개서 시각화하자.

3. 헷갈리고 모르는 내용은 선배들에게 빨리빨리 질문하자.

4. 코딩 공부는 꾸준히 하자.

5. 하지 않아도 될 야근은 하지 말자(!!!)

6. 우리는 밥을 먹으면 단순해진다. 헿(-> 작성자 연다혜)


https://brunch.co.kr/@becky812/16

이 글의 마지막에서 언급된 막내 기자는 바로 나다...


작가의 이전글 데이터 저널리스트에게 배우자! - NICAR
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari