서문
과학자, 분석가, 컨설턴트 등 기술 문서나 보고서를 준비해야 하는 모든 이들에게 가장 중요한 기술 중 하나는 사람의 마음을 끄는 데이터 시각화, 즉 설득력 있는 그림을 만드는 능력입니다. 그림은 대개 주장의 핵심적인 무게를 담고 있습니다. 따라서 명확하고 매력적이어야 하며, 무엇보다 설득력이 있어야 합니다. 잘 만든 그림 하나가 영향력 있는 논문과 그렇지 못한 논문, 프로젝트 수주 성패, 혹은 면접의 합격 여부를 가르는 결정적인 차이를 만들기도 합니다. 그럼에도 불구하고 설득력 있는 데이터 시각화 방법을 가르쳐주는 자료는 놀라울 정도로 적습니다. 관련 과정을 운영하는 대학도 드물고, 이 주제를 심도 있게 다룬 책도 많지 않습니다. 물론 몇 권은 존재하지만요. 시각화 소프트웨어 튜토리얼들은 대개 특정 시각 효과를 내는 ’기능’에만 집중할 뿐, 왜 어떤 방식은 권장되고 어떤 방식은 피해야 하는지에 대한 ’이유’는 설명해주지 않습니다. 실무에서는 그저 좋은 그림을 그릴 줄 아는 것을 당연하게 여기곤 하죠. 운이 좋다면 첫 논문을 쓸 때 몇 가지 요령을 알려주는 인내심 있는 지도 교수를 만날 수도 있겠지만 말입니다.
글쓰기 분야에서 숙련된 편집자들은 ’귀’에 대해 이야기합니다. 문장을 읽었을 때(혹은 마음속으로 낭독했을 때) 그 글이 좋은지 아닌지를 소리로 판별해내는 능력입니다. 저는 데이터 시각화에서도 마찬가지로 ’눈’이 필요하다고 생각합니다. 그림을 보고 그것이 균형 잡혔는지, 명확하고 설득력이 있는지 한눈에 알아보는 안목 말입니다. 글쓰기와 마찬가지로, 그림을 보는 안목 또한 학습을 통해 기를 수 있습니다. 안목을 갖춘다는 것은 결국 좋은 시각화의 기본 규칙과 원칙을 깊이 이해하고, 남들이 무심코 지나치는 세밀한 부분에 주의를 기울이는 법을 배우는 것과 같습니다.
저의 경험상, 글쓰기가 그렇듯 주말에 책 한 권 읽는다고 안목이 갑자기 트이지는 않습니다. 이는 평생에 걸친 과정이며, 지금은 너무 복잡하거나 미묘하게 느껴지는 개념들이 5년 후에는 훨씬 더 깊은 울림으로 다가올 수도 있습니다. 저 역시 그림을 준비하는 방식에 대한 이해가 계속해서 진화하고 있습니다. 저는 정기적으로 새로운 접근 방식들을 접하려 노력하며, 다른 이들이 시각적으로나 디자인적으로 어떤 선택을 내렸는지 유심히 관찰합니다. 또한 언제든 제 생각을 바꿀 준비가 되어 있습니다. 오늘 훌륭하다고 생각한 그림에서 다음 달에는 비판할 거리를 찾아내기도 합니다. 그러니 제가 이 책에서 하는 말들을 절대적인 진리로 받아들이지 마시기 바랍니다. 특정 선택에 대한 저의 논리를 비판적으로 검토해보고, 그것을 수용할지 말지 스스로 결정하십시오.
이 책의 내용은 논리적인 순서로 배치되어 있지만, 대부분의 장은 독립적인 내용을 담고 있으므로 굳이 처음부터 끝까지 정독할 필요는 없습니다. 필요한 부분을 골라 읽거나 현재 고민 중인 특정 디자인 주제가 있다면 그 섹션을 먼저 확인하셔도 좋습니다. 사실 저는 이 책을 한 번에 다 읽기보다는, 오랜 시간을 두고 조금씩 읽어나가는 것을 추천합니다. 책에서 배운 몇 가지 개념을 실제 그림 작업에 적용해보기도 하고, 다른 개념들을 찾아 읽거나 이전에 배운 내용을 다시 들춰보기도 하면서 말이죠. 몇 달 뒤에 다시 읽어보면, 같은 내용이라도 전과는 다른 영감을 줄 것입니다.
이 책의 거의 모든 그림은 R과 ggplot2로 제작되었지만, 저는 이 책이 단순히 ‘R 활용서’라고 생각하지 않습니다. 저는 시각화의 보편적인 원칙에 대해 이야기하고 있습니다. 그림을 그릴 때 사용한 소프트웨어는 부차적인 문제입니다. 제가 책에서 보여드리는 스타일의 그림은 여러분이 선호하는 어떤 시각화 소프트웨어로도 구현할 수 있습니다. 물론 ggplot2 같은 패키지들이 제가 사용하는 기법들을 구현하기에 훨씬 편리한 것은 사실입니다. 하지만 다시 강조컨대 이 책은 ’R 책’이 아니므로, 코드나 프로그래밍 기술 자체에 대해서는 논의하지 않습니다. 여러분이 코드가 아니라 ’개념’과 ’그림’ 그 자체에 집중하기를 바라기 때문입니다. 특정 그림이 어떻게 구현되었는지 구체적인 로직이 궁금하다면, GitHub 저장소(https://github.com/clauswilke/dataviz)에서 책의 소스 코드를 확인하실 수 있습니다.
시각화 소프트웨어와 그림 제작 파이프라인에 대한 생각
저는 지난 20여 년간 과학 출판물을 위한 그림을 제작해 왔으며, 그동안 수천 개의 결과물을 만들었습니다. 이 긴 시간 동안 변하지 않은 사실이 하나 있다면, 바로 그림 제작 파이프라인의 끊임없는 변화입니다. 몇 년 주기로 새로운 프로그래밍 라이브러리가 등장하거나 새로운 패러다임이 제시되면, 많은 과학자가 최신 도구로 넘어가곤 합니다. 저 역시 gnuplot, Xfig, Mathematica, Matlab, 파이썬의 matplotlib, R 기본 패키지, ggplot2 등 셀 수 없이 많은 도구를 거쳐 왔습니다. 현재 제가 가장 선호하는 방식은 ggplot2이지만, 은퇴할 때까지 이 도구만 사용할 것이라고 장담할 수는 없습니다.
소프트웨어 플랫폼이 계속해서 변한다는 사실은 이 책이 프로그래밍 서적이 아닌 이유이며, 모든 코드 예제를 과감히 생략한 핵심적인 이유이기도 합니다. 저는 여러분이 어떤 소프트웨어를 사용하든 이 책이 유용하기를 바라며, 나중에 ggplot2가 아닌 다른 최신 도구가 대세가 된 후에도 이 책의 가치가 유지되기를 원합니다. 물론 특정 그림을 어떻게 구현했는지 궁금해할 ggplot2 사용자들에게는 다소 아쉬운 선택일 수 있음을 알고 있습니다. 그런 분들께는 책의 소스 코드를 직접 확인해보시라고 권하고 싶습니다. 누구나 열람 가능하며, 어쩌면 나중에 코드에만 집중한 보충 문서를 만들 수도 있을 것 같네요.
오랜 세월 동안 제가 배운 한 가지는 ’자동화는 항상 옳다’는 것입니다. 그림은 데이터 분석 파이프라인(이 역시 자동화되어야 합니다)의 일부로서 자동으로 생성되어야 하며, 수동적인 사후 처리 과정 없이 파이프라인에서 바로 출력되어 인쇄기로 보낼 수 있는 수준이어야 합니다. 많은 연구자가 그림 초안을 프로그램으로 만든 뒤, 어도비 일러스트레이터(Illustrator) 같은 툴로 가져와 수동으로 다듬는 것을 보곤 합니다. 이는 몇 가지 측면에서 좋지 않은 선택입니다. 첫째, 그림을 수동으로 편집하는 순간 그 결과물은 ’재현 불가능’해집니다. 제3자가 여러분이 만든 것과 똑같은 결과물을 만들어낼 방법이 사라지는 것이죠. 단순히 축 라벨의 글꼴만 바꾼 거라면 사소해 보일 수 있지만, 그 경계는 쉽게 무너집니다. 예를 들어, 알아보기 힘든 라벨을 읽기 쉬운 단어로 수동으로 바꿨다고 칩시다. 제3자는 그 교체 작업이 과연 적절했는지 검증할 길이 없습니다. 둘째, 수동 작업이 파이프라인에 섞여 들어가면 수정이나 재작업을 꺼리게 됩니다. 공동 연구자가 합리적인 수정 요청을 해도 거부감이 들거나, 데이터를 새로 생성했음에도 불구하고 작업이 귀찮아 이전 그림을 그대로 쓰고 싶은 유혹에 빠지기 쉽습니다. 이는 지어낸 이야기가 아닙니다. 실제 연구 현장과 논문 작성 과정에서 비일비재하게 일어나는 일들입니다. 셋째, 나중에 스스로도 특정 그림을 만들기 위해 정확히 어떤 수동 조작을 했는지 잊어버려, 예전 그림과 일관된 스타일의 새로운 그림을 만들지 못하게 될 수도 있습니다.
이런 이유들로 저는 대화형(interactive) 그래프 제작 프로그램은 좋은 대안이 아니라고 생각합니다. 그런 툴들은 본질적으로 사용자에게 수동 작업을 강요합니다. 사실 대화형 툴에서 처음부터 끝까지 그림을 손으로 그리는 것보다, 초안을 코드로 자동 생성한 뒤 일러스트레이터로 다듬는 것이 차라리 나을 수도 있습니다. 엑셀(Excel) 역시 대화형 툴의 일종이며, 진지한 그림 제작이나 데이터 분석에는 권장하지 않는다는 점을 유념하십시오.
또한 데이터 시각화 도서에서 중요한 점은 제안된 기법의 ’실현 가능성’입니다. 아무리 우아하고 새로운 시각화 기법을 발명했다 해도, 누구도 그 기법을 실무에서 쉽게 적용할 수 없다면 아무런 소용이 없습니다. 에드워드 터프티(Edward Tufte)가 처음 ’스파크라인(sparkline)’을 제안했을 때, 당시의 기술로는 이를 쉽게 구현할 방법이 없었던 것처럼 말이죠. 시대를 앞서가는 선구적인 아이디어도 필요하지만, 저는 무엇보다 이 책이 현업에서 그림을 그리는 데이터 과학자들에게 실질적이고 즉각적인 도움을 주길 바랍니다. 그래서 이 책의 다음 장들에서 소개할 시각화 기법들은 모두 ggplot2와 공개된 확장 패키지들을 사용해 단 몇 줄의 R 코드로 구현할 수 있는 것들입니다. 실제로 3D로 만들지 마십시오, 가장 일반적으로 사용되는 이미지 파일 형식 이해하기, 올바른 시각화 소프트웨어 선택하기 장에 등장하는 몇몇 예외적인 그림을 제외하면, 이 책의 거의 모든 그림은 코드에 의해 정확히 자동 생성된 결과물입니다.
감사의 말
이 프로젝트는 RStudio 팀이 R을 세계적인 출판 플랫폼으로 만들기 위해 쏟은 헌신적인 노력 없이는 결코 완성될 수 없었을 것입니다. 특히 이 책의 모든 그림을 그리는 데 사용된 ggplot2의 제작자 해들리 위컴(Hadley Wickham)에게 깊은 감사를 드립니다. 또한 R 마크다운을 창안하고 knitr 및 bookdown 패키지를 만든 이회 시(Yihui Xie)에게도 고마움을 전합니다. 이러한 도구들이 없었다면 저는 이 방대한 작업을 시작조차 하지 못했을 것입니다. R 마크다운으로 파일을 작성하는 과정은 정말 즐거웠고, 덕분에 방대한 자료를 수집하면서도 동력을 잃지 않을 수 있었습니다. 또한 colorspace를 총괄한 아힘 자일라이스(Achim Zeileis)와 레토 슈타우퍼(Reto Stauffer), ggforce와 gganimate의 토마스 린 페데르센(Thomas Lin Pedersen), ggrepel의 카밀 슬로위코프스키(Kamil Slowikowski), sf의 에드저 페베스마(Edzer Pebesma), 그리고 색각 이상 시뮬레이션을 위한 colorspace와 colorblindr 모듈 작업에 힘써준 클레어 맥화이트(Claire McWhite)에게 특별한 감사를 표합니다.
많은 분이 이 책의 초고에 대해 소중하고 유익한 피드백을 주셨습니다. 무엇보다 오라일리(O’Reilly)의 편집자인 마이크 루키데스(Mike Loukides)와 스티브 해로즈(Steve Haroz)는 모든 장을 직접 읽고 꼼꼼한 논평을 남겨주셨습니다. 또한 칼 버그스트롬(Carl Bergstrom), 제시카 헐먼(Jessica Hullman), 매튜 케이(Matthew Kay), 에드저 페베스마(Edzer Pebesma), 트리스탄 마르(Tristan Mahr), 존 슈와비시(Jon Schwabish), 해들리 위컴(Hadley Wickham)의 의견도 큰 도움이 되었습니다. 렌 키퍼(Len Kiefer)의 블로그와 키어런 힐리(Kieran Healy)의 서적 및 블로그 게시물은 어떤 그림을 그릴지, 어떤 데이터 세트를 사용할지에 대한 수많은 영감을 주었습니다. 마지막으로 티아고 아라이스(Tiago Arrais), 맬컴 배럿(Malcolm Barrett), 제시카 버넷(Jessica Burnett), 존 콜더(John Calder), 안토니우 페드루 카마르구(Antônio Pedro Camargo), 대런 카드(Darren Card), 킴 크레스만(Kim Cressman), 아코스 하이두(Ákos Hajdu), 앤드류 킨스만(Andrew Kinsman), 윌 코르센(Will Korsen), 알렉스 랄레지니(Alex Lalezhari), 존 리들리(John Ridlay), 카트린 라인웨버(Katrin Leinweber), 미켈 마디나(Mikel Madina), 클레어 맥화이트(Claire McWhite), 스부시소 음콘드와네(Sbusiso Mkondwane), 호세 나자리오(Jose Nazario), 스티브 퍼트먼(Steve Putman), 마엘 살몬(Maëlle Salmon), 크리스티안 슈도마(Christian Schudoma), 제임스 스콧 브라운(James Scott-Brown), 엔리코 스피넬리(Enrico Spinelli), 바우터 판 데르 베일(Wouter van der Bijl), 론 유르코(Ron Yurko)를 비롯해 오타나 소소한 오류들을 지적해준 많은 독자분께 감사를 전합니다.
아울러 tidyverse 팀과 R 커뮤니티 전반의 모든 기여자분께도 감사의 인사를 드립니다. R에는 정말로 마주할 수 있는 거의 모든 시각화 문제에 대한 해결책(패키지)이 이미 존재합니다. 이 방대한 패키지들은 수천 명의 데이터 과학자와 통계학자로 구성된 거대한 커뮤니티에 의해 만들어졌으며, 그들 중 많은 이가 어떤 방식으로든 이 책이 탄생하는 데 기여했습니다.