영화 <클로저>(2004)에서 주인공 앨리스(나탈리 포트만 扮)는 말합니다.


"사랑이 어디 있어? 볼 수도, 만질 수도, 느낄 수도 없어."

(원문: "Where is this love? I can't see it. I can't touch it. I can't feel it.")


 작중에서 다툼 중에 댄(주드 로 扮)이 사랑한다고 말하자 한 말이죠. 우리에게 어떤 존재나 상태가 보이지 않는다면 그만큼 답답한 일도 없을 것입니다. 사랑도 ‘여기 있어!’ 하고 보여줄 수 있다면 좋겠지만 그러질 못하니 답답할 때도 많이 생깁니다. 만약 사랑을 보여줄 수 있어서, 댄이 앨리스에게 “이게 사랑이야” 하고 보여줬다면 어떻게 됐을까요? 물론 그렇다고 해서 싸움이 멎었을 것 같진 않습니다. 대신 댄이 앨리스에게 설명할 부분이 훨씬 줄어들겠죠.



데이터는 보여줄 수 있나요


 우리가 마주하게 될 데이터는 어떠한가요? 자료형에 따라 숫자나 문자로 존재하지만 우리가 낱낱의 데이터를 직접 보고 판단하기는 어렵습니다. 가령 7만 행으로 이루어진 데이터프레임을 보고 있다고 합시다. 열이 10개만 되어도 우리는 70만 개의 자료를 봐야 합니다. 우리가 그 모든 자료를 하나씩 봐가며 정보를 파악하기는 어렵습니다. 특히나 대중에게 보여주기란 더욱 어렵습니다. 사람들은 아무 정보도 얻지 못할 수 있죠. 대신 우리는 데이터를 시각화합니다.


 데이터 시각화란 무엇일까요? 데이터 시각화란, 숫자나 문자로 표현되었던 데이터를 차트를 사용하여 표현하는 것입니다. 그래픽 디자인, 시각 인지학, 컴퓨터 공학, 통계학 등 다양한 분야가 관련된 영역입니다. 데이터가 갖고 있는 다양한 측면을 직접 눈으로 볼 수 있게 해주죠. 데이터 시각화의 목적은 ‘커뮤니케이션’에 있습니다. 분석가들은 데이터를 시각화해서 상대방에게 효율적으로 정보 전달하려 노력합니다(후지 토시쿠니, 와타나베 료이치. (2020). 데이터 시각화 입문. 서울:로드북.).


 저도 지금 데이터 시각화 작업을 하고 있습니다. 지금 보고 있는 데이터는 장학금 데이터인데요, 장학금 데이터의 어떤 내용을 어떻게 그리고 얼마나 보여줘야 하는지 많이 고민합니다. 그리고 어떤 도구를 통해서 보여줘야 하는지도 많이 고민했습니다. 그 고민 가운데 제가 시도했던 두 가지를 보여드리고자 합니다.



파이썬과 시각화 모듈


 파이썬에도 시각화 도구가 있습니다. 몇몇 모듈을 통해 시각화가 가능한데요. 그 중에서도 Matplotlib 모듈은 유명합니다. 그래서 저도 처음에는 Matplotlib로 시각화를 시도하게 됩니다.


 그런데 Matplotlib가 뭐냐고 물으실 수 있을 겁니다. 이름을 보면 뭔가 낯익지 않나요? 이름에서도 알 수 있듯이 Matplotlib는 MATLAB과 비슷합니다. 그래서 Matplotlib 홈페이지에 들어가보면, 아예 설명부터 matplotlib.pyplot is a collection of functions that make matplotlib work like MATLAB. 라고 명시해둡니다. MATLAB을 사용해본 상경계나 이공계 학생 분들의 경우 많이 익숙하실 겁니다. 


MATLAB과 Matplotlib 비교 이미지 - 무엇이 MATLAB이고 무엇이 Matplotlib일까?


 그런데 저는 처음에 그래프 몇 개를 Matplotlib로 그려보다가 다른 모듈로 갈아타게 됩니다. 한계가 많이 보여서입니다. 그래서 그 한계는 대체 무엇이었느냐? 일단 그래프가 예쁘지 않습니다. 아, 물론 이 글을 읽는 누군가는, “아니 저 정도면 그래프 예쁘지, 뭘 더 원해!”라고 말할 수도 있습니다. 그러나 분석의 내용이 같다면, 좀 더 시각적으로 예쁘고, 사용자의 응답에 반응할 수 있는 도구가 더 적절할 것입니다. 그래서 어떤 것을 택했느냐, 바로 plotly를 찾게 됩니다.





같은 값이면 다홍치마다. Plotly에서는 원하는 만큼 예쁘게 만들 수 있다.


 Plotly는 시각화 라이브러리입니다. Plotly는 비단 파이썬뿐만 아니라 R, MATLAB(?), Perl 등의 언어에도 그래프 라이브러리를 제공합니다. Plotly의 가장 큰 장점은 사용자와의 상호작용에 있습니다. 단순히 이미지로서의 그래프를 띄우는 것이 아닙니다. 기반으로 만들어져서 웹브라우저 상에 동적인 이미지를 보여줄 수 있습니다. 그래서 그게 무슨 말이냐구요? 다음 그림을 보죠.




 Matplotlib의 경우에는 그래프를 정적인 이미지로 보내줍니다. 그러나 plotly는 실행하면 바로 웹브라우저로 뜨면서 그래프가 담고 있는 정보도 같이 나오게 됩니다. 사용자가 그래프 위에 마우스를 올리면 해당 그래프의 간단한 정보도 나오고, 클릭이나 확대도 가능합니다.



Plotly Dash의 활용



Plotly의 https://dash.gallery/Portal/ 에 가면 다양한 Dash를 볼 수 있다.


 저는 지금 Plotly에서 제공하는 Plotly Dash도 제작해보려고 하는데요, Plotly Dash의 경우 창 하나에 여러 그래프와 다양한 문구를 올릴 수 있다는 점에서 좋습니다. 다만 Plotly Dash를 만들 때 html을 조금 알고 있어야 더 예쁘게 만들 수 있습니다. 단순히 차트만 올리기에는 Plotly Dash에서 많은 기능을 제공해서 아깝기도 합니다.


 아직까진 장학금 데이터 시각화 작업이 진행중에 있습니다. 머지않아 서비스를 제공할 것인데요. 작업한 성과가 좋게 나왔으면 좋겠습니다. 그러기 위해 최선을 다하겠습니다! 그리고 날씨가 급격하게 추워지더니 불쑥 겨울이 찾아왔는데요. 부디 다들 추위 조심하시고 건강하시길. 그리고 많관부!



이미지 출처: https://plotly.com