[The Art of Data] 2회 이럴 땐 이런 그래프: 데이터에 맞는 시각화 방법

March 31, 2017

송한나의 THE ART OF DATA (2회)
이럴 땐 이런 그래프: 데이터에 맞는 시각화 방법

 

 

지난 회에서는 데이터 시각화가 데이터의 특성을 이해하는 데 얼마나 유용하고 간편한 도구인지, 데이터 시각화가 이미 우리의 삶에 얼마나 가깝게 스며들어 있는지를 잘 알아보았습니다. 이제는 실제로 데이터 시각화를 어떻게 다룰 수 있을지 구체적인 방법을 살펴볼 때입니다. 

이번 회에는 데이터에 적합한 시각화 방법을 어떻게 선택할 것인가에 대해 살펴보겠습니다. 데이터 시각화 방법의 분류 기준은 크게 두 가지 관점으로 접근할 수 있습니다. 하나는 데이터를 구성하는 변수의 개수에 따라 분류하는 것이고, 다른 하나는 데이터 시각화의 목적에 따라 분류하는 것입니다.

 

 

변수의 개수에 따른 분류

 

첫번째로 변수의 개수에 따라 분류하는 기준은 간단합니다. 이름에서 알 수 있듯이 변수가 한 개면 단변량(univariate), 두 개면 이변량(bivariate), 세 개 이상이면 다변량(multivariate) 데이터 시각화로 분류할 수 있습니다. 단순하게 구별해 보자면 변수의 값을 x축과 같은 한 개의 축에 표시하면 단변량, x축 및 y축과 같은 두 개의 축에 표시하면 이변량이라고 구분할 수 있습니다. 다변량은 세 개 이상의 축에 표시하는 경우뿐만 아니라, 두 개의 축에 컬러 코딩과 같은 다른 방법을 더하는 방법에서 볼 수 있듯이 다양하게 응용됩니다. 이와 같은 세 가지 유형의 데이터 시각화 방법을 차례로 살펴보겠습니다. 

먼저 단변량 데이터 시각화 방법 중 가장 많이 쓰이는 것은 차트의 대표주자라고 할 만한 바 차트(bar chart), 라인 차트(line chart), 파이 차트(pie chart)와 같은 기본 차트입니다. 한 개의 축(axis)에 대응하는 데이터 값을 막대의 길이로 표현하는가, 선으로 이어서 표현하는가, 원의 넓이로 표현하는가에 따라 각각의 형태가 달라지는 것으로 이해할 수 있습니다. 가장 단순한 차트이기에 데이터 값의 크기를 직관적으로 파악할 수 있고, 누구나 쉽게 이해할 수 있습니다. 그러므로 정확한 데이터 분석이 강조되는 대시보드 디자인에서 빠질 수 없는 기본 시각화 방법입니다. 같은 종류의 데이터를 여러 가지 조건으로 비교하고 싶다면 단순한 기본 차트를 위로 쌓아 올리거나(stacked) 옆으로 늘어놓는(multiple) 방법으로 응용함으로써 더 복잡한 데이터를 시각화할 수 있습니다

 

 

[그림 1] 대시보드에 사용된 기본 차트의 예

 

다음으로 이변량 데이터 시각화 방법은 두 개의 축에 각각 대응하는 데이터 값을 표시하는 방법이라고 이해할 수 있습니다. 대표적인 유형이 산포도(scatterplot)입니다. 산포도는 두 개의 변수 간 상관관계를 직관적으로 파악할 수 있는 장점이 있습니다. 데이터 포인트의 분포 패턴에 따라 양의 상관관계가 있는지, 음의 상관관계가 있는지, 아무런 상관관계가 없는지를 한눈에 살펴볼 수 있습니다.

산포도는 x축과 y축 각각에 두 가지 데이터 값이 대응되는 것이 기본 형태이지만, 점 대신 버블을 사용해 원의 크기로 표현함으로써 세 번째 차원을 시각화하는 버블 차트(bubble chart)로 응용되기도 합니다. 여기에 컬러 코딩을 통해 데이터의 범주를 구분하여 표현할 수 있기에 비교적 간단히 만들 수 있으면서도 풍부한 정보를 시각화할 수 있어 자주 쓰이는 시각화 방법입니다. 

 

 

[그림 2] 산포도(scatterplot)의 예 

 

 

 

[그림 3] 버블 산포도(bubble scatterplot)의 예

 

마지막으로 다변량 데이터 시각화 방법은 세 개 이상의 축을 갖는 시각화 방법을 통칭하는 것입니다. 대표적인 방법으로 여러 개의 축을 병렬적으로 배열하여 비교하는 평행좌표그림 (parallel coordinates)이나, 여러 개의 작은 차트를 매트릭스 형식으로 배열하여 비교하는 스몰 멀티플(small-multiples)이 있습니다. 평행좌표그림은 데이터 값을 표시한 세로축 여러 개를 나란히 늘어놓음으로써 한번에 많은 데이터를 비교하기에 좋습니다. 데이터 포인트를 선으로 연결했을 때 특징적인 패턴이 나타나는지 살펴봄으로써 탐색적 데이터 분석을 하는 데 유용합니다. 주의할 점은 축을 어떤 순서로 배열하느냐에 따라 유의미한 패턴이 나타나거나 나타나지 않을 수 있으므로 배열 순서가 중요하다는 점입니다. 

스몰 멀티플은 작은 차트 여러 개를 매트릭스 형태로 배치함으로써 전체적인 패턴을 파악하거나 시간적인 변화의 추세를 알아보는 데 적합합니다. 차트의 종류는 거의 모든 차트를 적용할 수 있어서 바 차트나 라인 차트와 같은 기본 차트에서 상세한 정보의 표시를 생략한 채 막대나 선의 패턴만을 여러 개 배치하기도 하고, 또는 지도와 같이 2차원 이상의 데이터를 포함한 시각화를 여러 개 배치하는 등 다양한 방법으로 활용됩니다. 

 

 

 

[그림 4] 평행좌표그림(parallel coordinates)의 예

 

 

 

[그림 5] 지도를 활용한 스몰 멀티플(small multiple)의 예

 

 

시각화의 목적에 따른 분류

 

두번째로 데이터 시각화의 목적에 따라 분류하는 방법은 데이터의 추세, 위계, 분포, 관계, 공간 등과 같이 특정한 목적을 표현하기에 적합한 시각화 방법들로 구분하는 것입니다. 좋은 시각화를 만드는 과정에 있어서 데이터 개수에 따라 시각화 방법을 선택하는 것은 하나의 출발점에 불과하며, 시각화가 데이터의 특성에 부합하고 전달하려는 메시지와 시각적 표현이 일치할 때 비로소 좋은 시각화를 만들 수 있습니다. 그렇기에 심미적으로 보기 좋다고 해서 반드시 좋은 시각화라고 할 수는 없으며, 어떤 목적에 적용하느냐에 따라 같은 형태의 차트라도 다른 용도로 활용할 수 있습니다. 

먼저 추세(trend)를 보는 가장 간단한 방법은 라인 차트(line chart)를 활용하는 것입니다. 이때 x축이 시간축으로 사용되어 선의 기울기 변화를 통해 시간에 따른 추세의 변화를 살펴볼 수 있습니다. 추세의 변화만을 보려면 단순한 라인 차트(line chart)를 사용할 수 있지만, 복수의 카테고리가 차지하는 비율의 변화를 함께 보려면 영역 차트(area chart)를 사용할 수도 있습니다. 이러한 영역 차트를 차례로 쌓아서 중심선을 기준으로 배열하여 만드는 스트림그래프(streamgraph)는 이름에서 알 수 있듯이 추세의 변화를 한눈에 보여주고 있다.

 

 

 

[그림 6] 영역 차트(area chart)를 활용한 추세 표현의 예

 

 

 

[그림 7] 스트림그래프(stream graph)의 예

 

위계(hierarchy)를 살펴보기 위해서는 데이터의 관계가 트리 형태로 표현될 수 있어야 합니다. 대표적인 시각화 방법으로 트리맵(treemap)이나 선버스트(sunburst)를 살펴보겠습니다. 트리맵은 카테고리별로 특정 데이터 집합이 전체 데이터에서 차지하는 비율을 면적으로 표현하여, 각 카테고리를 구성하는 요소가 무엇인지 한눈에 파악할 수 있도록 만든 방법입니다. 인터랙션을 더하면 각 부분집합을 더 자세히 드릴다운(drill-down)함으로써 하위 구성요소를 살펴볼 수 있습니다. 선버스트는 이러한 구조를 멀티플 링 차트의 형태로 보여주는 방법이라고 할 수 있습니다. 각각의 링은 각 레벨에 속하는 데이터의 크기를 표현합니다. 두 가지 방식은 기본적으로 같은 데이터 구조를 사용하지만, 어떤 좌표계를 기준으로 표현하느냐에 따라 다른 형태로 나타납니다. 

 

 

 

[그림 8] 트리맵(treemap)의 예

 

 

 

[그림 9] 선버스트(sunburst) 다이어그램의 예

 

 

분포 시각화

 

분포(distribution)를 시각화하기 위해 사용하는 시각화 방법은 히스토그램(histogram), 박스플롯(boxplot) 또는 바이올린 플롯(violin plot)이 대표적입니다. 히스토그램은 겉보기에는 바 차트와 비슷해 보이지만 전혀 다른 정보를 담고 있습니다. 바 차트의 막대는 서로 다른 범주에 속하는 범주형 데이터의 크기를 표현하지만, 히스토그램의 막대는 같은 범주에 속하는 연속형 데이터를 일정한 간격으로 구분하여 구간별 데이터의 크기를 표현하는 것입니다. 따라서 바 차트의 막대는 서로 떨어져 있지만, 히스토그램의 막대는 서로 붙어있는 것을 볼 수 있습니다. 이때 일정한 간격으로 구분하는 구간을 빈(bin)이라고 부르며, 구간의 크기는 자유롭게 설정할 수 있습니다.

박스플롯은 분포의 중위수(median)와 사분위수(quartile)를 박스와 선으로 표현하므로 상자수염그림(box and whisker diagram)이라고 불리기도 합니다. 박스플롯은 통계량을 간단히 표현하기에 좋은 방법이지만, 실제 분포의 형태를 알 수는 없습니다. 반면에 바이올린 플롯은 실제 분포의 형태를 도형으로 표현하여 직관적으로 분포의 특징을 알아보는 데 쓰입니다. 다시 말해 히스토그램처럼 가로축을 기준으로 데이터가 분포된 차트를 세로축 방향으로 돌려서 배치한 형태라고 이해하면 좋을 것입니다. 

 

 

 

[그림 10] 히스토그램(histogram)의 예

 

 

 

[그림 11] 박스플롯(boxplot)과 바이올린 플롯(violin plot)

 

네트워크(network)를 시각화하는 대표적인 방법에는 네트워크 그래프의 일종인 force-directed graph가 있습니다. 네트워크 그래프는 그래프 이론(graph theory)에 기반을 두기 때문에 약간의 개념 이해가 필요합니다. 그래프는 꼭지점을 이루는 정점(node 또는 vertex)과 두 개의 꼭지점을 연결하는 간선(edge 또는 link)으로 구성됩니다. 하나의 노드에서 다른 노드로 들어오고 나가는 방향이 있을 경우, directed graph라고 부릅니다. 여기에 척력과 인력을 더해서 그래프를 시각화함으로써 더 보기 좋게 만들기도 하는데, 이것을 force-directed graph라고 부릅니다. 이때 노드끼리는 척력을 적용하고 에지로 연결된 노드에는 인력을 적용하면, 에지의 길이와 노드의 분산, 대칭성에 있어서 더 좋은 결과를 얻을 수 있습니다. 용수철과 같은 물리 법칙을 사용하기 때문에 직관적으로 이해하기 쉬운 장점이 있어서 많이 쓰이는 그래프입니다.

 

 

관계 시각화

 

관계를 시각화하는 다른 시각화 방법으로 코드 다이어그램(chord diagram)을 사용할 수 있습니다. 코드 다이어그램은 엔티티(entity) 간의 상호 연결관계를 표현하는 방법으로, 매트릭스 구조의 데이터에 적합합니다. 원의 둘레를 따라서 데이터를 원호(arc)의 형태로 연결하여 배열할 뿐만 아니라, 데이터 집합을 카테고리로 구분하여 표현하는 것도 가능하여 하위 집합 간의 연결관계를 한눈에 파악하기에 좋습니다. 기능적으로 복잡한 정보를 담을 수 있는 장점이 있으면서도, 원과 원호로 구성되는 형태가 심미적으로도 우수하여 인기있는 시각화 방법입니다. 

 

 

 

[그림 12] 네트워크 그래프(network graph)의 예

 

 

 

[그림 13] 코드 다이어그램(chord diagram)의 예

 

 

지도 시각화

 

마지막으로 데이터 시각화에서 빼놓을 수 없는 지도(map) 시각화 방법을 살펴보겠습니다. 공간적 데이터(spatial data)를 시각화하기 위한 지도에는 매우 다양한 종류가 있는데, 등치지역도(choropleth map)나 변량비례도(cartogram)가 많이 쓰입니다. 등치지역도는 데이터 값의 크기에 따라 지역별로 색을 다르게 표시하는 지도를 말합니다. 범주형 데이터라면 서로 다른 색상들로 구분하고, 연속형 데이터라면 한 색상의 명도를 몇 단계로 나누어 적용하는 방법으로 지역별 데이터를 표시할 수 있습니다. 그러나 이러한 방법은 인구밀도가 매우 높은 지역과 낮은 지역에 동일한 척도를 적용할 경우 표시된 지역의 면적이 실제 데이터 값의 크기를 반영할 수 없다는 단점이 있습니다. 

이러한 문제를 해결하기 위해 사용되는 변량비례도는 특정한 데이터 값의 변화에 따라 지도의 면적이 왜곡되는 지도를 말합니다. 즉 데이터 값이 큰 지역의 면적이 시각적으로도 더 크게 표시됨으로써 데이터 값의 크기를 직관적으로 인지할 수 있다는 장점이 있습니다. 즉 지도의 형태를 왜곡시킴으로써 데이터 지각의 왜곡을 방지하도록 보정하는 것입니다. 

 

 

 

[그림 14] 코로플레스(choropleth) 지도의 예

 

 

 

[그림 15] 카토그램(cartogram)의 예 

 

지금까지 소개한 데이터 시각화 방법 외에도 매우 다양한 유형의 시각화가 존재합니다. 데이터타입에 따라 이산형 데이터, 연속형 데이터에 적합한 시각화 방법을 분류할 수도 있습니다. 그러나 데이터 시각화 방법을 분류하는 기준은 서로 배타적인 것이 아니며, 서로 다른 시각화 방법들이 함께 사용되는 경우도 많습니다. 예를 들면 데이터 관계를 보여주기 위한 산포도는 데이터 개수를 기준으로 볼 때에는 이변량 시각화에 속하면서, 시각화의 목적을 기준으로 볼 때에는 두 변수 간의 관계를 보여주기 위한 시각화에 속합니다. 데이터 값을 원의 면적으로 표현하는 버블차트는 기본적으로 일변량 시각화인데, 산포도에 버블차트를 결합하면 한 차원이 더해져서 다변량 시각화로 쓰일 수 있습니다. 여기에 더해 범주형 데이터를 표현하기 위한 컬러 코딩을 더한다면 더 복잡한 정보를 하나의 차트에 담을 수도 있고, 나아가 여러 개의 차트를 매트릭스 형태로 배열함으로써 시간 차원의 변화를 표현할 수도 있습니다.

이와 같이 기본적인 데이터 시각화 방법들을 어떻게 결합하느냐에 따라 표현방법은 무궁무진하게 변주될 수 있는 것입니다. 중요한 것은 데이터 분석을 통해 얻을 수 있는 통찰력이 무엇인지를 파악하고, 데이터 시각화를 통해 전달할 메시지가 무엇인지를 명확히 정의하는 데 있습니다. 모든 경우에 전부 적합하거나 모든 시각화 중에서 가장 좋은 단 하나의 데이터 시각화 방법이란 존재하지 않으며, 데이터를 통해 보여주고자 하는 메시지를 표현하기에 적합한 방법을 선택하는 과정이 있을 뿐입니다. 이 과정에서 데이터의 특성과 시각화의 특성을 모두 이해해야만, 본래 기대한 효과를 얻을 수 있을 것입니다. (다음 회에 계속)

 

 

이 칼럼은 디비가이드에 연재한 [송한나의 The Art of Data]를 전재한 것입니다.  원문보기>

 

출처 : 한국데이터진흥원

제공 : 데이터 전문가 지식포털 DBguide.net

Share on Facebook