방송대 오픈소스기반데이터분석 10강: 게슈탈트 원리와 시각화 선택
좋은 차트는 데이터를 예쁘게 꾸민 결과가 아니라 독자가 필요한 비교를 빠르게 수행하도록 설계한 화면이다. 이 글은 보고서 질문을 데이터 유형과 분석 과제로 바꾸고, 알맞은 차트를 선택한 뒤 게슈탈트 원리와 Matplotlib 구성 요소로 메시지를 점검하는 방법을 익힌다.
한 화면에 모든 차트를 넣어도 좋은 보고서가 되지 않는다
학습을 위해 한 온라인 상점의 월간 운영 보고서를 만든다고 가정하자. 담당자는 지역별 주문량, 일별 주문 추세, 배송시간 분포, 광고비와 주문액의 관계를 알고 싶어 한다. 이 네 질문은 모두 같은 거래 데이터에서 시작하지만 비교 대상이 다르다. 지역별 주문량은 범주 비교, 일별 주문은 시간 흐름, 배송시간은 분포, 광고비와 주문액은 두 수치 변수의 관계다.
여기에 파이 차트, 선 그래프, 3D 차트를 취향대로 배치하면 독자는 차트를 다시 해석해야 한다. 먼저 질문의 문법을 찾고 그 문법을 가장 직접적으로 보여 주는 시각 표현을 골라야 한다. 데이터 시각화는 복잡한 데이터를 시각적 형태로 표현해 이해, 의사소통, 의사결정과 탐색적 데이터 분석을 돕는 과정이지 차트 종류를 많이 사용하는 활동이 아니다.
선택 핵심: “무슨 차트를 쓸까?”보다 “범주를 비교하는가, 분포를 보는가, 관계를 찾는가, 시간 변화를 추적하는가, 공간 위치를 읽는가?”를 먼저 묻는다.
질문의 동사를 찾으면 후보 차트가 좁혀진다
| 분석 질문 | 데이터 구조 | 우선 고려할 표현 | 판단 이유 | 주의할 선택 |
|---|---|---|---|---|
| 범주별 크기를 비교한다 | 범주 + 수치 | 막대 그래프 | 공통 기준선에서 길이를 비교한다. | 범주가 많을 때 파이·도넛은 각도 비교가 어렵다. |
| 전체에서 비중을 본다 | 소수 범주의 구성비 | 파이·도넛 또는 막대 그래프 | 합계가 하나의 전체라는 조건을 표현한다. | 합이 100%가 아니거나 범주가 많으면 부적합하다. |
| 시간에 따른 변화를 추적한다 | 순서 있는 시간 + 수치 | 선·영역 그래프 | 연속된 흐름과 추세를 보여 준다. | 시간 순서를 섞으면 잘못된 경로가 만들어진다. |
| 값의 분포를 본다 | 수치형 한 변수 | 히스토그램·박스 플롯·바이올린 플롯 | 구간 빈도, 중앙값·사분위수, 밀도 형태를 본다. | 히스토그램 구간 수에 따라 인상이 달라진다. |
| 두 변수의 관계를 본다 | 수치형 두 변수 | 산점도 | 각 관측값을 점으로 놓아 방향·형태·이상점을 본다. | 점이 겹치거나 제3의 변수를 빠뜨릴 수 있다. |
| 행렬의 패턴을 본다 | 행·열 격자 값 | 히트맵 | 값의 차이를 색으로 바꾸어 군집과 패턴을 찾는다. | 색상 척도와 범례가 불명확하면 값을 오독한다. |
| 여러 지표의 형태를 비교한다 | 동일 척도의 다변량 값 | 레이더 차트 | 방사형 축의 윤곽으로 항목별 강약을 본다. | 축 순서와 척도가 다르면 모양 비교가 왜곡된다. |
| 지역별 분포를 본다 | 위치 정보 + 값 | 지도 시각화 | 공간적 밀도와 지역 패턴을 위치에 연결한다. | 단순 범주명만 있다고 지도가 필요한 것은 아니다. |
표는 정확한 개별 값을 찾아야 할 때 차트보다 낫다. 3D 차트는 실제 세 축의 공간 관계가 질문의 핵심일 때 후보가 될 수 있지만, 깊이와 원근 때문에 값 비교가 어려워질 수 있다. “복잡한 데이터이므로 3D”가 아니라 “세 차원의 위치 관계를 봐야 하는가”로 판단한다.
게슈탈트 원리는 독자가 무엇을 한 덩어리로 보는지 설명한다
게슈탈트 원리는 인간이 개별 요소보다 요소가 이루는 전체 패턴과 관계를 인식하는 방식을 설명한다. 시각화에서는 관련 정보를 자연스럽게 묶고, 비교 순서를 만들며, 중요한 대상을 배경에서 분리하는 설계 기준으로 사용할 수 있다.
| 원리 | 독자가 지각하는 방식 | 보고서 적용 | 실패 사례 |
|---|---|---|---|
| 근접성 | 가까운 요소를 같은 그룹으로 본다. | 제목·범례·주석을 관련 차트 가까이에 둔다. | 범례가 다른 차트에 더 가까워 소속이 헷갈린다. |
| 유사성 | 색·모양·크기가 같으면 같은 집단으로 본다. | 같은 범주는 여러 차트에서 같은 색을 쓴다. | 같은 색을 서로 다른 의미에 재사용한다. |
| 폐쇄성 | 불완전한 윤곽도 완성된 형태로 본다. | 불필요한 테두리를 줄여도 구조를 이해하게 한다. | 구분선까지 과도하게 지워 범위가 모호해진다. |
| 연속성 | 정렬된 요소를 이어지는 흐름으로 본다. | 시간축을 순서대로 놓고 선의 경로를 자연스럽게 만든다. | 월 순서를 문자순으로 정렬해 거짓 추세를 만든다. |
| 공동 운명 | 같은 방향으로 변하는 요소를 한 집단으로 본다. | 동시에 상승·하락하는 계열의 움직임을 비교한다. | 척도가 다른 두 선을 겹쳐 같은 움직임처럼 보이게 한다. |
| 대칭성 | 대칭 배치를 안정된 구조로 인식한다. | 대응하는 두 집단을 같은 축과 균형 잡힌 배치로 비교한다. | 미적 대칭 때문에 중요한 크기 차이를 숨긴다. |
| 단순성 | 복잡한 정보를 단순하고 안정된 형태로 해석한다. | 핵심 비교에 필요 없는 장식·격자·색을 줄인다. | 정보까지 삭제해 단위와 기준을 알 수 없게 한다. |
| 전경-배경 | 주목 대상과 배경을 분리한다. | 핵심 계열만 강조하고 보조선은 약하게 처리한다. | 배경 격자와 장식이 데이터보다 강하게 보인다. |
단순성은 “요소가 적을수록 좋다”는 규칙이 아니다. 비교에 필요 없는 요소를 줄이되 축 단위, 범례, 기준선처럼 해석에 필요한 정보는 남겨야 한다.
운영 보고서의 네 질문을 실제 차트로 판정해 본다
지역별 주문량은 막대 길이로 비교한다
서울·부산·대전·광주의 주문량을 비교한다면 막대 그래프가 직접적이다. 범주를 주문량 기준으로 정렬하면 연속성이 비교 순서를 만든다. 강조할 지역 하나만 다른 색으로 두고 나머지는 같은 색으로 통일하면 유사성과 전경-배경이 함께 작동한다.
일별 주문 추세는 시간 순서가 보존된 선으로 잇는다
선 그래프는 인접 시점의 값이 이어진다는 의미를 갖는다. 날짜가 빠졌는데도 선으로 곧바로 연결하면 관측되지 않은 구간도 연속 측정한 것처럼 보일 수 있다. 시간축 누락 여부를 확인하고, 여러 계열을 비교할 때는 같은 범주에 같은 색과 선 모양을 사용한다.
배송시간 분포는 히스토그램과 박스 플롯의 질문이 다르다
히스토그램은 배송시간을 구간으로 나눠 분포 모양, 중심, 퍼짐과 치우침을 살핀다. 박스 플롯은 중앙값, 사분위수와 이상치 후보를 간결하게 비교한다. 지점별 분포를 한 화면에서 비교할 때는 박스 플롯이 효율적이고, 한 지점의 분포 형태를 자세히 볼 때는 히스토그램이 더 많은 정보를 준다.
광고비와 주문액의 관계는 각 관측값을 점으로 남긴다
산점도는 두 수치 변수의 쌍을 점으로 표시한다. 상승 방향이 보이면 양의 관계를 의심할 수 있지만 인과관계를 입증한 것은 아니다. 행사 기간이나 지역 규모 같은 제3의 변수가 둘을 함께 키웠을 수 있으므로 색·패싯 또는 후속 분석으로 조건을 확인한다.
차트의 의미는 데이터뿐 아니라 축과 표식에서 만들어진다
Matplotlib에서 Figure는 전체 그림을 담는 바깥 컨테이너이고, Axes는 실제 그래프가 그려지는 영역이다. Axes 안에는 x축과 y축을 담당하는 Axis 객체가 있으며, 눈금(ticks), 제목(title), 축 레이블(label), 선(line), 점 표식(marker), 범례(legend)가 해석 단서를 제공한다.
| 구성 요소 | 독자가 얻는 정보 | 빠뜨렸을 때 생기는 문제 |
|---|---|---|
| Figure | 한 장 안의 전체 레이아웃과 출력 범위 | 여러 Axes의 크기와 배치가 충돌할 수 있다. |
| Axes | 데이터가 놓이는 개별 그래프 영역 | Figure와 같은 뜻으로 오해하면 복합 그래프 구성이 어렵다. |
| Axis·ticks | 값의 위치, 범위, 간격과 단위 | 잘린 축이나 불균등 간격을 알아채기 어렵다. |
| title·label | 무엇을, 어떤 단위로 비교하는지 | 차트의 대상과 축 의미가 모호해진다. |
| line·marker | 연결된 흐름과 개별 관측 지점 | 연속 변화와 실제 측정점을 구분하기 어렵다. |
| legend | 색·선·표식이 나타내는 계열 | 여러 계열의 정체를 해석할 수 없다. |
Matplotlib 코드는 Figure에서 메시지까지 순서대로 조립한다
다음은 앞의 운영 사례와 다른 수치로 직접 구성한 월별 주문 추세 예제다. 객체 지향 방식으로 Figure와 Axes를 분리하면 어느 그래프 요소를 수정하는지 명확하다.
import matplotlib.pyplot as plt
months = ["1월", "2월", "3월", "4월", "5월"]
orders = [120, 135, 128, 160, 175]
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(months, orders, marker="o", label="주문 건수")
ax.set_title("월별 주문 추세")
ax.set_xlabel("월")
ax.set_ylabel("주문 건수")
ax.legend()
ax.grid(alpha=0.25)
plt.show()
plt.subplots()가 전체 Figure와 하나의 Axes를 만든다.ax.plot()이 시간 순서의 값을 선으로 연결하고marker="o"가 실제 관측점을 남긴다.- 제목과 축 레이블이 비교 대상과 단위를 설명하고, 범례가 선의 의미를 연결한다.
- 약한 격자는 값을 읽도록 돕되 데이터보다 앞에 나오지 않게 한다.
이 코드에서 월 목록을 ["1월", "3월", "2월", "4월", "5월"]로 섞으면 선은 입력 순서대로 연결된다. Matplotlib이 달의 의미를 추론해 자동 정렬해 주지 않으므로, 시각화 전에 데이터 순서를 검증해야 한다.
한글 폰트는 환경 설정과 그래프 설정을 나누어 본다
강의자료의 Colab 예시는 나눔 폰트를 설치하고 폰트 캐시를 갱신한 뒤 세션을 다시 시작하며, Matplotlib에 사용할 글꼴을 지정하는 흐름이다. 설치는 실행 환경에 폰트 파일을 준비하는 단계이고, plt.rc()는 Matplotlib이 그 폰트를 선택하도록 하는 단계다.
import matplotlib.pyplot as plt
plt.rc("font", family="NanumBarunGothic")
글꼴을 지정했는데도 한글이 깨지면 코드 오타만 볼 것이 아니라 해당 런타임에 폰트가 실제로 설치되었는지, 캐시 갱신과 세션 재시작이 끝났는지 확인한다. 강의자료 기준으로 Colab 런타임이 새로 연결될 때는 환경 설정을 다시 수행해야 한다. 다른 운영체제나 실행 환경에서는 설치된 글꼴 이름과 설정 절차가 달라질 수 있다.
마지막 검수는 차트 종류보다 오독 가능성을 찾는 일이다
차트를 완성한 뒤에는 다음 순서로 독자의 시선을 점검한다.
- 질문: 제목만 읽어도 어떤 비교와 결론 후보를 찾는지 알 수 있는가?
- 자료형: 범주·수치·시간·위치 구조와 차트의 표현 방식이 맞는가?
- 척도: 축 범위, 간격, 단위, 히스토그램 구간과 색상 척도가 왜곡을 만들지 않는가?
- 지각: 근접성·유사성·연속성과 전경-배경이 의도한 그룹과 순서를 만드는가?
- 맥락: 범례, 레이블, 출처와 필요한 주석이 있어 독자가 다시 추측하지 않아도 되는가?
- 한계: 상관을 인과로, 이상치를 오류로, 3D 원근을 실제 크기 차이로 오해할 여지는 없는가?
오류 교정: 화려한 차트가 이해하기 어렵다면 독자의 능력 문제가 아니다. 질문과 시각 부호의 연결, 축과 범례, 그룹화 원리를 다시 설계해야 한다.
핵심 개념 정리
- 차트는 데이터 이름보다 비교·분포·관계·시간·공간이라는 분석 질문에 맞춰 고른다.
- 게슈탈트의 여덟 원리는 요소를 어떻게 묶고, 흐르게 하고, 강조할지 설명하는 지각 기준이다.
- 막대와 히스토그램은 모양이 비슷해도 각각 범주 비교와 연속형 분포라는 서로 다른 질문에 답한다.
- Matplotlib의 Figure는 전체 컨테이너이고 Axes는 그래프 영역이며, Axis·ticks·label·legend가 해석 맥락을 만든다.
- 시각화의 마지막 단계는 장식을 더하는 일이 아니라 축·순서·색·범례가 오독을 만드는지 검수하는 일이다.
새로운 시각화 과제에서는 결정할 질문을 동사로 적고 → 데이터 구조를 범주·수치·시간·공간으로 확인하고 → 가장 직접적인 차트를 고르고 → Figure·Axes·축·표식을 조립하고 → 게슈탈트 원리로 그룹과 강조를 점검하고 → 축·색·순서가 만들 수 있는 오독을 제거한다. 이 흐름은 어떤 차트 유형을 만나도 재사용할 수 있다.
예상문제 10선
1. 데이터 시각화의 목적을 가장 정확하게 설명한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③
- ① 오답: 표의 값 나열은 한 방식일 뿐이며 패턴과 관계를 효과적으로 전달한다는 목적이 빠졌다.
- ② 오답: 차트 수가 아니라 분석 질문을 얼마나 명확히 전달하는지가 중요하다.
- ③ 정답: 데이터 이해, 효과적 의사소통과 의사결정 지원이라는 역할을 함께 담는다.
- ④ 오답: 시각적 관계는 가설을 제시할 수 있지만 인과관계를 자동 입증하지 않는다.
2. 다섯 지역의 주문량 크기를 정확히 비교하려 할 때 우선 고려할 차트는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
- ① 정답: 지역이라는 범주별 수치를 막대 길이로 직접 비교하는 질문에 맞는다.
- ② 오답: 히스토그램은 개별 범주가 아니라 연속 수치의 구간별 빈도를 본다.
- ③ 오답: 지역에는 시간 순서가 없어 선으로 연결할 근거가 없다.
- ④ 오답: 현재 질문에는 관계를 볼 두 수치 변수가 제시되지 않았다.
3. 막대 그래프와 히스토그램의 결정적 차이를 바르게 설명한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
- ① 오답: 두 차트가 담당하는 데이터 구조를 서로 뒤바꾸었다.
- ② 오답: 두 변수 관계는 산점도, 시간 추세는 선 그래프가 더 직접적이다.
- ③ 오답: 모양이 비슷해도 범주 비교와 연속형 분포라는 질문이 다르다.
- ④ 정답: 막대의 범주 축과 히스토그램의 연속 구간이라는 차이를 정확히 구분한다.
4. 가까이 배치된 요소를 같은 집단으로 인식하는 게슈탈트 원리는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
- ① 오답: 대칭성은 대응되는 균형 잡힌 형태를 안정된 구조로 인식하는 원리다.
- ② 정답: 공간적으로 가까운 제목·범례·표식을 하나의 그룹으로 묶어 본다.
- ③ 오답: 폐쇄성은 불완전한 윤곽도 완성된 형태로 보려는 경향이다.
- ④ 오답: 공동 운명은 같은 방향으로 움직이거나 변하는 요소를 한 집단으로 보는 원리다.
5. “단순성 원리에 따라 축 레이블과 단위도 모두 지우는 것이 좋다”는 주장에 대한 교정은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
- ① 오답: 단순성은 요소 추가가 아니라 핵심 구조를 분명하게 인식하도록 복잡성을 줄이는 원리다.
- ② 정답: 장식과 필수 맥락을 구분해 정보 손실 없이 단순화한다.
- ③ 오답: 3D 원근은 비교를 더 어렵게 만들어 불필요한 복잡성을 늘릴 수 있다.
- ④ 오답: 단순성은 시각 정보의 해석 방식을 설명하며 차트 설계에 직접 활용할 수 있다.
6. Matplotlib 객체 지향 방식으로 선 그래프를 구성하는 순서로 가장 적절한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
- ① 오답: 범례는 계열을 그린 뒤 연결하며 Figure를 삭제하면 그릴 컨테이너가 사라진다.
- ② 오답: Axes는 데이터를 그리는 영역이므로 제거할 수 없고 순서도 뒤바뀌었다.
- ③ 오답: 저장 전에 그래프와 맥락 요소가 완성되어야 하며 데이터 확인도 먼저 필요하다.
- ④ 정답: 컨테이너와 그래프 영역을 만든 뒤 데이터와 해석 단서를 순서대로 조립한다.
7. Figure와 Axes의 관계를 올바르게 설명한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
- ① 정답: 하나의 Figure 안에 하나 이상의 Axes를 배치할 수 있는 포함 관계를 설명한다.
- ② 오답: x축은 Axes 내부의 Axis 객체이며 Figure와 Axes의 정의가 아니다.
- ③ 오답: 범례와 marker는 Axes에 추가되는 표현 요소다.
- ④ 오답: 두 객체는 포함 관계에 있지만 역할과 수정 대상이 다르다.
8. 본문 코드의 orders에서 3월 대비 4월 주문 건수 증가량은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③
- ① 오답: 15는 1월 120건과 2월 135건의 차이다.
- ② 오답: 25는 2월 135건과 4월 160건을 건너뛰어 비교한 값이다.
- ③ 정답: 4월 160건에서 3월 128건을 빼면 32건이다.
- ④ 오답: 47은 3월 128건과 5월 175건을 비교한 값이다.
9. 행과 열로 구성된 상관계수 행렬에서 큰 값의 위치 패턴을 빠르게 찾고 싶다. 가장 적절한 시각화는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
- ① 오답: 파이 차트는 하나의 전체를 이루는 소수 범주의 비중을 보여 준다.
- ② 오답: 선은 순서나 시간에 따른 변화를 연결하며 행렬 위치 패턴에 직접적이지 않다.
- ③ 오답: 레이더 차트는 여러 지표의 방사형 윤곽 비교에 쓰이며 행렬 구조를 보존하지 않는다.
- ④ 정답: 행렬의 각 값을 색상으로 대응해 큰 값과 군집의 위치를 빠르게 찾을 수 있다.
10. 월별 두 상품의 판매 추세를 비교하는 차트를 검수하는 순서로 가장 적절한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
- ① 정답: 질문·자료형·지각 원리·해석 맥락을 순서대로 확인하는 절차다.
- ② 오답: 파이는 시간 추세에 맞지 않고 같은 색과 범례 삭제는 계열 구분을 막는다.
- ③ 오답: 3D 원근과 단위 생략은 값 비교를 어렵게 하고 장식은 핵심을 가린다.
- ④ 오답: 시간 순서와 연결을 버렸고, 시각적 관계만으로 인과를 결론 내릴 수도 없다.
참고 자료와 작성 기준
이 글은 해당 차시 강의자료를 바탕으로 학습 목적에 맞게 재구성한 비공식 학습자료입니다. 시각화 판단 기준, 코드 예제와 문제 해설은 학습자의 이해를 돕도록 구성하고 검토했습니다.
- 작성·편집: 올에이클래스 학습연구팀
- 주요 근거: 한국방송통신대학교 컴퓨터과학과, 「오픈소스 기반 데이터분석」 10강 ‘데이터 시각화 1’ 강의자료(PDF 생성 정보: 2025년)
- 편집 원칙: 올에이클래스 편집 정책
- 최종 내용 검토: 2026-08-30
댓글
댓글 쓰기