단원 홈

Ⅱ. 데이터 준비와 분석7차시

이 그래프는 무엇을
부풀리고 무엇을 숨기나

목적에 맞는 그래프와 거짓말 지수

같은 2024년 따릉이 숫자로 그린 막대그래프 두 장이 서로 다른 말을 합니다. 한 장은 "6월 급증", 한 장은 "거의 그대로" — 그런데 숫자는 하나도 틀리지 않았습니다. 그림이 부풀린 배수를 재는 자를 손에 쥐고, 물음마다 알맞은 그림을 골라 그려 봅니다.

  • [12데과02-02]
  • 50분네 정거장
  • 오늘의 자거짓말 지수
  • 자료따릉이 2024 날짜별 366일 · 연령대별 7줄
Ⅱ 단원 지도7 / 14차시
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14

학습 목표

  1. 개념에서

    그림이 부풀린 배수를 거짓말 지수로 재고, 그 값이 자른 자리로만 정해지는 까닭을 식으로 말할 수 있다.

  2. 손으로

    set_ylim 한 줄로 같은 자료를 두 그림으로 그리고, 물음마다 알맞은 그리기 함수를 골라 그릴 수 있다.

  3. 확인에서

    과장된 그림을 정직하게 고치는 방법과 그림 옆에 함께 적을 것을 한 줄로 쓸 수 있다.

1
여는 장면 · 5분

같은 두 숫자로 그린 두 장의 그림

자전거 소식지 한 면에 이런 기사가 실렸다고 해 봅시다. 기자는 서울 열린데이터광장에서 2024년 따릉이 날짜별 대여 건수 366일을 받아 달마다 더했고, 5월과 6월 두 달만 떼어 막대그래프를 그렸습니다.

그림 속 두 막대는 눈에 띄게 다릅니다. 그런데 막대 위에 적힌 숫자는 479.0만 건과 485.8만 건 — 실제 값 그대로입니다. 기자는 숫자를 하나도 고치지 않았어요.

무엇이 그림을 바꾼 걸까요? 바뀐 것은 바닥 하나뿐입니다. 여기서 바닥이란 세로축이 시작하는 값을 말합니다 — 0에서 시작할 수도 있고, 431.1만에서 시작할 수도 있습니다.

자전거 소식 · 가상 기사

6월 따릉이 이용 껑충 — 5월보다 눈에 띄게 늘었다

주간 두바퀴 · 이 기사와 매체 이름은 수업을 위해 지어낸 것입니다
그림 1같은 두 숫자, 두 장의 그림바닥만 다르다 · 막대 위 숫자는 두 장이 같다
① 잘린 그림보이는 변화 +14.2% — 지수 10.00479.05월485.86월바닥 431.1만기사에 실린 그림 — 숫자는 그대로다. ② 0부터 그린 그림보이는 변화 +1.4% — 지수 1.00479.05월485.86월바닥 0바닥만 0으로 내렸다 — 다른 것은 없다. ① 잘린 그림보이는 변화 +14.2% — 지수 10.00479.05월485.86월바닥 431.1만기사에 실린 그림 — 숫자는 그대로다. ② 0부터 그린 그림보이는 변화 +1.4% — 지수 1.00479.05월485.86월바닥 0바닥만 0으로 내렸다 — 다른 것은 없다.

① 은 6월이 5월보다 14.2% 많아 보이고, ② 는 1.4% 많아 보입니다. 실제 차이는 +1.42% — ① 이 보여 준 변화는 데이터의 변화보다 10배 큽니다. 자료: 서울시 공공자전거 대여이력(OA-15182) 2024년 날짜별 대여 건수 366일 → 월 합계(원장 계산, 코드 ①과 같은 파일)

먼저 예측

그림 ① 만 보고 이 기사를 읽은 사람은 6월 이용이 몇 % 늘었다고 말하게 될까요? 그리고 그 사람의 말과 실제 +1.42% 사이의 거리를 하나의 숫자로 적는다면 어떤 숫자가 좋을까요? 3정거장 「손으로」 미션 ①에서 여러분이 직접 그 숫자를 세어 봅니다.

체크포인트 1

같은 숫자로 그린 두 그림이 서로 다른 말을 하는 것을 보았고, 달라진 것이 바닥 하나뿐임을 확인했다.

다음 정거장 · 개념 15분 →
2
개념 · 15분

무엇을 묻느냐가 그림을 고르고, 어디를 자르느냐가 배수를 정한다

2-1목적과 자료형이 그래프를 고른다

그림을 고르는 일은 취향이 아닙니다. 무엇을 묻는가(목적)와 자료가 어떤 모양인가(자료형) 둘이 정합니다. 같은 366개 숫자도 물음이 달라지면 다른 그림이 됩니다 — "보통 하루에 몇 건 빌리나"는 분포라서 히스토그램이고, "1년 동안 어떻게 변했나"는 추세라서 꺾은선입니다.

표 1물음 × 자료형 → 그리기 함수함수 이름은 matplotlib 에서 부르는 그대로다
묻는 것자료의 모양그리는 함수이 차시의 보기
비교범주 × 수치ax.bar · 이름이 길면 ax.barh연령대별 이용 건수 7줄
추세시간 × 수치ax.plot월별 대여 12달
분포수치 하나ax.hist · ax.boxplot하루 대여 366일
관계수치 × 수치ax.scatter기온과 대여(Ⅱ-10에서)
구성부분 / 전체누적 막대항목이 많으면 원그래프를 쓰지 않는다

잘못 고른 그림은 없던 것을 만듭니다. 자치구 25곳의 대여 건수를 꺾은선으로 이으면 순서 없는 범주에 '추세'가 생깁니다 — 구를 어떤 차례로 놓느냐에 따라 선의 모양이 달라지니까요. 함수 이름: matplotlib 3.5.2 (브라우저 Pyodide 0.26.4)

2-2거짓말 지수 — 그림이 부풀린 배수를 재는 자

에드워드 터프티는 1983년에 그림의 과장을 재는 자를 하나 내놓았습니다. 거짓말 지수(lie factor) — 그림에 보이는 변화율을 데이터의 변화율로 나눈 수입니다. 1 이면 그림이 데이터를 그대로 말한 것이고, 10 이면 열 배로 부풀린 것입니다.

막대그래프에서는 이 값이 놀랄 만큼 단순해집니다. 막대의 길이는 값 − 바닥이니까, 바닥을 작은 막대 값의 f 지점에 두면 (f 는 기준 막대가 바닥에 잠긴 비율입니다)

식거짓말 지수 = 1 ÷ (1 − f) — 데이터가 얼마나 변했는지는 식에 들어가지 않는다.

그림 1 의 ① 은 f = 0.9 였으니 1 ÷ 0.1 = 10.00입니다. 데이터 변화가 +1.42% 든 +50% 든 지수는 똑같이 10 입니다 — 자른 자리만이 배수를 정합니다.

늘어난 비교에는 천장이 없습니다. f 를 0.99 까지 올리면 지수는 100 이 됩니다. 그런데 줄어든 비교에는 벽이 있습니다 — 바닥이 뒤 막대 값을 넘는 순간 그 막대가 사라져 그릴 그림이 없어지니까요. 그 벽의 높이는 1 ÷ |변화율| 입니다.

그림 2사다리와 벽 — 늘어난 비교와 줄어든 비교왼쪽: 바닥을 올릴수록 지수가 오른다 · 오른쪽: 2.87에서 막힌다
늘어난 비교 — 사다리에 천장이 없다바닥 0.0만= 0 (자르지 않음)지수 1.00보이는 변화 +1.4%바닥 239.5만= 5월 × 0.5지수 2.00보이는 변화 +2.8%바닥 383.2만= 5월 × 0.8지수 5.00보이는 변화 +7.1%바닥 431.1만= 5월 × 0.9지수 10.00보이는 변화 +14.2%바닥 455.1만= 5월 × 0.95지수 20.00보이는 변화 +28.3%데이터의 변화는 다섯 줄 모두 +1.42% 그대로다. 줄어든 비교 — 2.87에서 벽에 막힌다바닥 0.0만= 0 (자르지 않음)지수 1.00보이는 변화 −34.9%바닥 105.0만= 11월 × 0.3지수 1.43보이는 변화 −49.9%바닥 175.0만= 11월 × 0.5지수 2.00보이는 변화 −69.8%바닥 227.8만= 11월 × 0.651지수 2.87보이는 변화 −100.0%12월 막대가 사라진다 — 벽데이터의 변화는 네 줄 모두 −34.90%다.바닥이 12월 값(227.8만)을 넘으면 그릴 그림이 없다. 늘어난 비교 — 사다리에 천장이 없다바닥 0.0만= 0 (자르지 않음)지수 1.00보이는 변화 +1.4%바닥 239.5만= 5월 × 0.5지수 2.00보이는 변화 +2.8%바닥 383.2만= 5월 × 0.8지수 5.00보이는 변화 +7.1%바닥 431.1만= 5월 × 0.9지수 10.00보이는 변화 +14.2%바닥 455.1만= 5월 × 0.95지수 20.00보이는 변화 +28.3%데이터의 변화는 다섯 줄 모두 +1.42% 그대로다. 줄어든 비교 — 2.87에서 벽에 막힌다바닥 0.0만= 0 (자르지 않음)지수 1.00보이는 변화 −34.9%바닥 105.0만= 11월 × 0.3지수 1.43보이는 변화 −49.9%바닥 175.0만= 11월 × 0.5지수 2.00보이는 변화 −69.8%바닥 227.8만= 11월 × 0.651지수 2.87보이는 변화 −100.0%12월 막대가 사라진다 — 벽데이터의 변화는 네 줄 모두 −34.90%다.바닥이 12월 값(227.8만)을 넘으면 그릴 그림이 없다.

왼쪽 다섯 줄은 데이터의 변화가 모두 +1.42% 로 같습니다. 달라진 것은 바닥뿐인데 지수는 1.00 → 2.00 → 5.00 → 10.00 → 20.00 으로 오릅니다. 오른쪽은 11월(349.9만) → 12월(227.8만), 데이터 −34.90% — 바닥이 227.8만에 닿는 순간 12월 막대가 사라져 지수가 2.87 에서 멈춥니다(= 1 ÷ 0.3490). 자료: 따릉이 2024 월 합계(원장 검산 ⓒ · ⓗ) — 코드 ①의 표와 같은 값

표 22024년 달마다 — 데이터의 변화와, 180만에서 자른 그림이 보이는 변화이 표의 숫자가 시뮬레이터·코드 ①·코드 ③이 함께 쓰는 정본이다
달대여(만 건)앞 달 대비 데이터잘린 그림이 보이는 변화거짓말 지수
1월198.3———
2월203.2+2.44%+26.4%10.82
3월315.2+55.14%+483.5%8.77
4월460.1+45.99%+107.2%2.33
5월479.0+4.10%+6.7%1.64
6월485.8+1.42%+2.3%1.60
7월372.3−23.36%−37.1%1.59
8월399.8+7.39%+14.3%1.94
9월425.1+6.31%+11.5%1.82
10월468.7+10.26%+17.8%1.73
11월349.9−25.34%−41.1%1.62
12월227.8−34.90%−71.9%2.06

데이터로는 2.44% 밖에 늘지 않은 1→2월이 지수 10.82 로 1등입니다 — 1월 막대(198.3만)가 바닥 180만에 가장 깊이 잠겨 f = 0.908 이기 때문이에요. 반대로 가장 크게 줄어든 11→12월(−34.90%)은 지수 2.06 — 1→2월의 5분의 1 에도 못 미칩니다. 지수를 정하는 것은 변화율이 아니라 기준 막대가 바닥에 얼마나 잠겼는가입니다. 3월부터 출발하는 비교는 아무리 해도 2.33 을 넘지 못합니다 — 3월부터는 막대가 이미 길어서 바닥에 덜 잠기니까요. 자료: 따릉이 2024 월 합계 · 바닥 180만(원장 검산 ⓑ · ⓓ)

5→6월 · 데이터와 그림
+1.42%데이터의 변화
인데
+14.2%보이는 변화
물 위에 보이는 것은5월 막대의 10분의 1바닥 431.1만

바닥 431.1만 — 5월 막대의 10분의 1만 자로 쓴다.

1→2월 · 데이터로는 2.44%
+2.44%데이터의 변화
인데
10.82거짓말 지수
바닥 180만 — 열두 달1 · 2월

막대가 짧을수록 바닥에 깊이 잠긴다 — 가장 크게 거짓말.

11→12월 · 추락처럼 보이는 비교
−34.90%데이터의 변화
인데
2.06거짓말 지수
바닥 180만 — 열두 달11 · 12월

줄어든 비교는 벽에 막힌다 — 1 ÷ 0.3490 = 2.87.

5→6월 · 바닥을 0으로 내리면
10.00바닥 431.1만
→
1.00바닥 0
0부터 그리면두 막대는 거의 같다바닥 0

잠겨 있던 밑동을 되찾으면 그림이 데이터와 같은 말을 한다.

자료: 위 네 쌍의 숫자는 모두 코드 ①이 찍는 값이고, 시뮬레이터가 세는 조각 수와도 같다.

2-3넓이로 읽히는 그림, 감소를 지우는 누적

축만 조심하면 되는 것이 아닙니다. 값을 아이콘 크기로 보이는 그림에서는 가로와 세로를 둘 다 값의 비율만큼 키우기 쉬운데, 그러면 눈에 들어오는 넓이는 그 제곱으로 커집니다.

5월 → 6월은 1.0142배입니다. 그런데 아이콘을 가로·세로 모두 1.0142배로 키우면 넓이는 +2.85% 늘어 지수 2.01 이 됩니다. 원·거품·그림그래프가 모두 넓이로 읽히니, 작은 변화일수록 넓이 지수는 2 에 가깝습니다(넓이 지수 = 배율 + 1).

아이콘으로 그리면5월 → 6월
5월6월가로·세로를 값의 비율(1.0142배)만큼키우면 넓이는 그 제곱으로 커진다넓이 +2.85%값 +1.42%
값 +1.42%넓이 +2.85%

자료: 코드 ②의 끝 두 줄이 찍는 값 — 넓이 지수 2.01

또 하나, 누적 그래프는 감소를 지웁니다. 2024년 따릉이는 월별로 세 달(7 · 11 · 12월)이 앞 달보다 줄었는데, 같은 값을 누적으로 그린 선은 한 번도 내려가지 않습니다. 0 이상인 값을 계속 더하니 내려갈 수가 없지요. 줄어든 달은 선이 완만해질 뿐입니다.

끝으로 축의 원칙 하나. 막대는 길이로 읽히므로 0에서 시작해야 하고, 꺾은선은 위치와 기울기로 읽히므로 0에서 시작하지 않아도 됩니다 — 기온 그래프를 0°C 부터 그리면 하루의 오르내림이 아예 보이지 않으니까요. 막대의 축을 꼭 잘라야 한다면 물결 표시와 '축 생략' 글을 붙이거나, 아예 꺾은선으로 바꿉니다.

규칙그림을 실을 때 바닥과 그 까닭을 함께 적는다. 자르지 않았다면 그것도 한 줄로 적는다.

다만 처방은 알리는 최소한일 뿐입니다. 끊김 표시를 달고 값을 정확히 읽게 해도 "커 보이는 느낌"은 남는다는 실험이 있습니다(Correll · Bertini · Franconeri, CHI 2020).

누적이 지우는 것2024년 12달
누적월별1월12월월별은 7 · 11 · 12월에 내려간다(주황 점 셋).누적은 한 번도 내려가지 않는다 — 0번.
월별 내려간 달 3누적 내려간 달 0

자료: 코드 ③이 찍는 '줄어든 달 3개 · 누적선에서 내려간 달 0개'

2-4그림을 의심하는 나침반

그림을 의심하는 나침반 — 네 방향을 차례로

  1. 바닥세로축이 어디서 시작하나 — 0 이 아니면 지수는 1 ÷ (1 − f)
  2. 넓이길이로 읽히나 넓이로 읽히나 — 아이콘·원·거품은 제곱으로 커진다
  3. 누적누적인가 아닌가 — 누적선은 절대 내려가지 않는다
  4. 물음이 그림이 답하는 물음이 내 물음과 같은가 — 분포인가 추세인가 비교인가

네 방향 가운데 바닥 하나만이 숫자로 재집니다. 나머지 셋은 "무엇으로 읽히는가"를 묻는 것이라 지수를 붙일 수 없지만, 먼저 묻지 않으면 지수를 잴 자리조차 찾지 못합니다.

체크포인트 2

거짓말 지수를 식(1 ÷ (1 − f))으로 말할 수 있고, 늘어난 비교에 천장이 없다는 것과 줄어든 비교의 벽을 안다. 이제 그 지수를 손으로 세어 본다.

다음 정거장 · 손으로 20분 →
3
손으로 · 20분

지수를 손으로 세고, 코드 한 줄로 다시 만든다

Ⅱ-6 에서 가져옴matplotlib 의 좋은 점으로 배운 “축을 내가 정한다”의 뒷면이 오늘입니다 — 축을 정할 수 있다는 것은 축으로 속일 수도 있다는 뜻입니다. 오늘 새로 쓰는 것은 ax.set_ylim(시작, 끝) 한 줄과 가로 막대 ax.barh 뿐입니다.

1

물에 잠긴 막대 — 밑동을 되찾아 지수를 센다

9분

여는 장면에 적어 둔 내 예측입니다. 이 판은 그 예측을 숫자로 채점합니다.

잘린 그래프에서 축 아래로 숨은 막대의 아랫부분을 이 판에서는 물에 잠긴 밑동이라 부르고, 물 위에 보이는 부분 하나를 조각이라 부릅니다. 조각을 톡 두드리면 같은 길이의 조각이 한 장 복제되어 수면 아래로 쌓이고, 바닥이 그만큼 내려갑니다. 막대가 0 에 닿을 때까지 센 조각 수가 곧 거짓말 지수예요. 사건 넷을 차례로 지나고, 지도에서 점들이 한 곡선에 눕는 것을 본 뒤, 마무리 카드에서 한 줄을 조립합니다.

시뮬레이터

물에 잠긴 막대

주간 두바퀴의 잘린 그래프에서 밑동을 한 조각씩 되찾아, 지수를 손으로 센다

  1. 1예측을 고르면 잠긴다
  2. 2물 위 조각을 톡톡 두드려 수면 아래로 쌓는다
  3. 30 에 닿을 때까지 센 조각 수 = 거짓말 지수
사건
예측 — 6월은 실제로 몇 % 많나
사건 1 · 주간 두바퀴의 그래프바닥 431.1만 — 3초만 보고 예측을 잠근다

조각 = 물 위에 보이는 기준 막대의 길이 · 거짓말 지수 = 막대 전체 ÷ 조각 = 1 ÷ (1 − f) · f = 기준 막대가 바닥에 잠긴 비율

벽 — 줄어든 비교에서는 바닥이 뒤 막대 값을 넘는 순간 그 막대가 사라진다. 그래서 지수는 1 ÷ |데이터 변화율| 에서 멈춘다

거짓말 지수—배
조각—
데이터의 변화—
잘린 그림이 보인 변화—
원래 바닥(만 건)431.1
잠긴 비율 f0.900
도전 1

사건 1 — 5월 막대의 물 위 조각을 0 에 닿을 때까지 두드려라. 조각은 몇 개이고, 그 수는 무엇과 같은가?

도전 2

사건 2 — 세 비교(1→2 · 2→3 · 11→12월)를 모두 세어라. 지수 5 를 넘는 비교는 어느 달에서 출발하나?

도전 3

사건 3 — 11→12월을 지수 3 으로 만들어 보라. 수면을 두드려 물을 부으면 바닥이 오른다.

자료: 서울시 공공자전거 대여이력(OA-15182) 2024년 날짜별 대여 건수 366일 → 월 합계 12개 (../data/bike_daily_2024.csv · 코드 ① · ③이 읽는 바로 그 파일). 월 합계 12개를 쪽 안에 실었고, 지수 · 벽 · 누적은 판이 그 자리에서 계산한다. 지어낸 것은 매체 이름과 기사 제목뿐이다.

마무리 카드의 주문은 이었다. 그렇게 만들려면 바닥을 까지 올려야 하고, 그때 지수는 이다. 그래서 나는 대신 를 그리고 그림 옆에 를 적는다.

확인 문제 6에 적어 제출 →
2

거짓말 지수 표 — 자른 자리만 바꾼다

3.5분

손으로 센 조각 수를 이번엔 코드가 다시 셉니다. 실행하기 전에 두 가지를 먼저 짐작해 두세요 — 5월 → 6월 대여는 실제로 몇 % 늘었을까요? 그리고 작은 막대의 90% 지점에서 자른 그림의 지수는 얼마일까요?

기본 빈칸 ① · ② · ③을 채우고 ▶ 실행합니다. ① 과 ② 는 무엇을 무엇으로 나누는가를 묻고(변화율은 늘 변화량 ÷ 원래 값입니다), ③ 은 1 ÷ (1 − f) = 5 를 f 에 대해 푸는 자리입니다.

도전 a, b = 5, 6 을 a, b = 6, 7(줄어든 비교, −23.36%)로 바꿔 보세요. 지수 열은 똑같이 1 · 2 · 5 · 10 · 20 인데 f 0.8 부터 보이는 변화율이 −117% · −234% … 가 됩니다. −100% 를 넘는 순간 7월 막대는 축 아래로 사라져 그릴 수 없는 그림이에요. 줄어든 비교는 f 가 0.766 을 넘을 수 없고 지수는 1 ÷ 0.2336 = 4.28 에서 멈춥니다 — 사건 3 의 벽과 같은 일입니다. 코드는 그릴 수 없는 그림의 숫자도 멀쩡히 찍습니다.

탐구 어느 신문이 "거짓말 지수 5 이하면 괜찮다"는 규칙을 세운다면 무엇을 놓칠까요? 늘어난 비교와 줄어든 비교를 함께 생각해 보세요.

지수가 데이터와 상관없이 로만 정해지는 까닭은, 보이는 변화율이 이고 데이터 변화율이 이라 나누면 만 남기 때문이다.

확인 문제 1에 식으로 적어 제출 →
3

같은 두 막대, 두 칸 — set_ylim 한 줄만 다르다

2.5분

이제 그 과장을 내 코드로 만들어 봅니다. 코드 ②는 같은 두 값을 두 칸에 그리는데, 달라지는 것은 ax.set_ylim 한 줄뿐입니다. 오른쪽 칸에서 6월 막대는 5월 막대의 몇 배로 보일까요?

기본 코드 ②는 채워져 있습니다. 그대로 ▶ 실행해 두 칸을 견주세요. 처음 실행은 몇 초 멈춥니다 — 고장이 아니라 matplotlib 과 한글 글꼴을 처음 받는 중이에요(쪽마다 한 번).

도전 ax.set_ylim 줄의 0.9 를 0.99 로 바꿔 보세요. 제목의 지수가 100.0 이 됩니다 — 그림은 '폭증'인데 데이터는 여전히 +1.42% 입니다. 끝 두 줄의 아이콘 넓이 지수 2.01 과 견주어 보세요. 어느 쪽이 더 크게 속일 수 있나요?

탐구 막대 대신 꺾은선(ax.plot)으로 같은 두 점을 이으면 0부터 시작하지 않아도 괜찮을까요? 막대는 '길이', 꺾은선은 '기울기'로 읽힌다는 말로 설명해 보세요.

오른쪽 그림을 정직하게 고치는 길은 둘이다. 하나는 이고, 다른 하나는 이다. 꺾은선은 로 읽히므로 0 에서 시작하지 않아도 되지만, 막대는 로 읽히므로 그럴 수 없다.

확인 문제 2에 적어 제출 →
4

질문 카드 셋 — 물음마다 다른 그림을 고른다

5분

축 이야기는 여기까지입니다. 이제 고르는 일이에요. 세 물음에 어떤 그림을 고르겠습니까? 빈칸을 채우기 전에 먼저 적어 두세요.

기본 빈칸 ④ 셋에 그리기 함수 이름을 채우고 ▶ 실행합니다. 가 는 1년 동안 어떻게 변했나(추세), 나 는 어느 연령대가 많이 빌렸나(비교), 다 는 보통 하루에 몇 건 빌리나(분포)입니다. 라 칸은 채워져 있어요 — 같은 월 합계를 누적으로도 그려 둡니다.

도전 다 칸의 ????? 를 plot(d["대여건수"] / 1e4) 로 바꾸면 무엇에 답하는 그림이 되나요? 같은 366개 숫자, 다른 물음입니다. 그리고 bins=12 를 bins=40 으로 바꾸면 봉우리 수가 달라지는지 보세요(Ⅱ-6 의 구간 폭).

탐구 나 칸을 원그래프(ax_b.pie)로 그리면 20대와 30대 가운데 어느 쪽이 큰지 한눈에 보일까요? 일곱 조각의 넓이로 읽는 것이 왜 어려운지 2-3 의 넓이 이야기와 이어 생각해 보세요.

가 칸은 자료가 이고 묻는 것이 라서 그 함수를 골랐다. 같은 366개 숫자라도 를 물으면 다른 그림이 된다.

확인 문제 3에 칸마다 적어 제출 →
체크포인트 3

지수를 조각으로 세었고, 그 과장을 코드 한 줄로 직접 만들었고, 물음마다 다른 그림을 골라 그렸다. 이제 남은 일은 정직하게 고쳐 적는 것이다.

다음 정거장 · 정리·확인 10분 →
4
정리·확인 · 10분

오늘의 탐험 일지

  1. 찾은 것

    숫자를 하나도 고치지 않아도 그림은 열 배로 부풀릴 수 있다 — 그 배수가 거짓말 지수이고, 막대에서는 1 ÷ (1 − f) 로 자른 자리만이 정한다.

  2. 도구의 한계

    matplotlib 은 set_ylim 한 줄을 막아 주지 않는다. 계산 코드는 7월 막대가 사라져 그릴 수 없는 그림의 지수도 멀쩡히 찍는다.

  3. 보고의 규칙

    그림 옆에 바닥과 그 까닭을 함께 적는다. 자르지 않았다면 그것도 한 줄로 적는다 — 처방은 알리는 최소한일 뿐이다.

✍️ 문제마다 답을 쓰고 제출하기를 누르세요. 제출하면 모범 답안이 열리고, 제출한 답은 선생님께 전달됩니다.

1. 막대그래프의 세로축을 작은 막대 값의 90% 지점에서 시작하면 거짓말 지수는 얼마인가? 데이터 변화율이 +5%일 때와 +50%일 때 그 값이 다른가? 그리고 그렇게 되는 까닭을 식 1 ÷ (1 − f) 를 유도해 한 문장으로 쓰시오.
📖 모범 답안

10 이다. 1 ÷ (1 − 0.9) = 10. 그리고 데이터 변화율이 +5% 든 +50% 든 같다.

유도 — 바닥을 y₀ 라 하면 막대의 길이는 값 − y₀ 이다. 보이는 변화율은 (v₂ − y₀ − (v₁ − y₀)) ÷ (v₁ − y₀) = (v₂ − v₁) ÷ (v₁ − y₀) 이고, y₀ = f · v₁ 을 넣으면 (v₂ − v₁) ÷ (v₁(1 − f)) 이다. 이것을 데이터 변화율 (v₂ − v₁) ÷ v₁ 로 나누면 분자의 (v₂ − v₁) 이 약분되어 사라지고 1 ÷ (1 − f) 만 남는다. 곧 데이터가 얼마나 변했는지는 지수에 들어가지 않는다.

코드 ①의 표가 그것을 그대로 보여 준다 — 데이터 변화가 +1.42% 하나뿐인데 f = 0 · 0.5 · 0.8 · 0.9 · 0.95 에서 지수가 1.00 · 2.00 · 5.00 · 10.00 · 20.00 으로 갈린다.

2. 코드 ②의 오른쪽 칸(지수 10.0)을 정직하게 고치는 방법 두 가지를 한 문장씩 쓰시오. 그리고 기온 추세를 꺾은선으로 그릴 때 세로축을 0°C에서 시작하지 않아도 되는 까닭과, 같은 논리가 막대그래프에는 통하지 않는 까닭을 쓰시오.
📖 모범 답안

① 0부터 다시 그린다 — ax.set_ylim(0, v2 * 1.03) 으로 바닥을 0 으로 내리면 지수가 1.00 이 되고, 그림이 데이터와 같은 말(+1.42%)을 한다.

② 꼭 잘라야 한다면 잘랐다고 알린다 — 축에 물결 표시를 넣고 "세로축 431.1만부터 · 축 생략" 을 적는다. 더 나은 길은 막대를 꺾은선으로 바꾸는 것이다.

꺾은선이 0°C 에서 시작하지 않아도 되는 까닭 — 꺾은선은 위치와 기울기로 읽는다. 게다가 섭씨 0 은 '없음'이 아니라 물이 어는 온도일 뿐이어서 기준점으로서 뜻이 없다. 0°C 부터 그리면 하루의 오르내림이 아예 보이지 않는다.

막대에 통하지 않는 까닭 — 막대는 길이로 읽힌다. 길이 비율이 곧 값 비율이라는 약속 위에 서 있으므로, 0 을 자르면 길이 비율 자체가 거짓이 된다.

다만 처방은 알리는 최소한이다. 끊김 표시를 달고 값을 정확히 읽게 해도 "커 보이는 느낌"은 남는다는 실험이 있다 (Correll · Bertini · Franconeri, CHI 2020).

3. 코드 ③의 가 · 나 · 다 세 칸에 고른 함수를 적고, 칸마다 그것을 고른 까닭을 자료형(시간 · 범주 · 수치 하나)과 물음(추세 · 비교 · 분포)으로 한 줄씩 쓰시오. 그리고 자치구 25곳의 대여 건수를 꺾은선으로 이은 그래프의 문제와 고친 그래프를 쓰시오.
📖 모범 답안

가 · ax_a.plot — 자료가 시간 × 수치(달 1~12 × 대여)이고 묻는 것이 추세(1년 동안 어떻게 변했나)라서 꺾은선. 달에는 순서가 있으므로 점을 선으로 이어도 된다.

나 · ax_b.barh — 자료가 범주 × 수치(연령대 7개 × 이용 건수)이고 묻는 것이 비교라서 막대. bar 도 답이지만 '~10대 · 70대이상' 처럼 이름표가 길어 폰에서 겹치므로 가로 막대로 눕혔다.

다 · ax_c.hist — 자료가 수치 하나(하루 대여 366개)이고 묻는 것이 분포(보통 하루에 몇 건)라서 히스토그램. 같은 366개를 plot 으로 그리면 '1년 동안의 오르내림'이라는 다른 물음에 답하는 그림이 된다.

자치구 25곳을 꺾은선으로 이으면 — 자치구는 순서가 없는 범주다. 선으로 이으면 없던 '추세'가 생기고, 구를 어떤 차례로 놓느냐에 따라 선의 모양이 달라진다. 가나다순으로 놓았을 때의 오르내림에는 아무 뜻이 없다. 값 순으로 정렬한 막대그래프(ax.bar, 구 이름이 길면 ax.barh)로 바꾼다.

4. 2024년 따릉이는 월별로 세 달(7 · 11 · 12월)이 앞 달보다 줄었다. 그런데 같은 월 합계를 누적 그래프로 그리면 '꾸준한 성장'처럼 보인다. 그 까닭을 코드 ③ 출력의 두 숫자를 들어 설명하고, 줄어든 달이 누적선에서는 어떤 모습으로 나타나는지 쓰시오.
📖 모범 답안

누적은 0 이상인 값을 계속 더한 것이므로 선이 절대 내려갈 수 없다. 코드 ③이 찍은 대로 월별로 줄어든 달은 3개인데 누적선에서 내려간 달은 0개다.

줄어든 달은 누적선에서 기울기가 완만해지는 것으로만 나타난다. 7월은 6월보다 23.36% 적게 빌렸지만 누적선은 여전히 오른다 — 덜 가파르게 오를 뿐이다. 그래서 '올해 얼마나 모였나'를 물을 때는 누적이 맞고, '언제 늘고 언제 줄었나'를 물을 때 누적을 쓰면 감소가 통째로 지워진다.

누적선에서 감소를 읽으려면 기울기를 견주어야 한다 — 시뮬레이터 사건 4 의 기울기 자가 한 일이 그것이다.

5. 넓이로 그린 원 두 개가 있다. 값이 2배가 되었다고 큰 원의 반지름을 2배로 그렸다. 보는 사람은 몇 배로 느끼기 쉬운가? 이때의 거짓말 지수는 얼마이고, 어떻게 고쳐야 하는지 쓰시오. 코드 ②의 아이콘 줄(넓이 지수 2.01)과 이어서 설명하시오.
📖 모범 답안

원은 넓이로 읽힌다. 반지름을 2배로 그리면 넓이는 4배가 되므로 보는 사람은 4배로 느끼기 쉽다. 보이는 변화 +300% ÷ 데이터 변화 +100% = 지수 3.00 이다.

고치는 법 — 넓이가 값에 비례하도록 반지름을 √2 ≈ 1.41배로 그린다(반지름은 값의 제곱근에 맞춘다). 또는 원 대신 길이로 읽히는 막대로 바꾼다.

코드 ②의 아이콘 줄과 이어서 — 5월 → 6월은 1.0142배인데 가로·세로를 모두 키우면 넓이가 +2.85% 늘어 지수 2.01 이 된다. 일반화하면 넓이 지수 = 배율 + 1 이다(배율 1.0142 → 2.01, 배율 2 → 3). 그래서 작은 변화일수록 넓이 지수는 2 에 가깝고, 큰 변화일수록 더 커진다. 축을 자르는 것(천장 없음)만큼 크지는 않지만, 넓이 과장은 눈치채기가 훨씬 어렵다 — 자른 축은 눈금을 보면 드러나지만 아이콘에는 눈금이 없기 때문이다.

6. 시뮬레이터 마무리 카드의 주문은 무엇이었고, 왜 들어줄 수 없었는지 숫자를 들어 쓰시오. 그리고 거절 대신 내놓은 정직한 그림과 한 줄 설명을 옮겨 적고, 조립할 때 뺀 칩과 그 까닭을 쓰시오.
📖 모범 답안

주문 — "5월과 6월의 차이가 막대 높이의 5% 넘게 보이면서, 거짓말 지수는 1.05 이하로 하라."

들어줄 수 없는 까닭 — 차이 6.8만 건이 그림 높이의 5% 로 보이려면 바닥을 350.2만까지 올려야 한다 (f = 0.731). 그때 지수는 1 ÷ (1 − 0.731) = 3.72 로, 주문한 1.05 를 한참 넘는다. '크게 보이게'와 '정직하게'는 같은 칼로 벨 수 없다 — 그래서 [거절] 도장을 찍었다.

정직한 그림과 한 줄 — 0 부터 그린 막대 두 개(지수 1.00)에 이렇게 적는다: “2024년 6월 따릉이 대여는 485.8만 건으로 5월보다 +6.8만 건(+1.42%) 많았다 — 거의 그대로다. (자료: 서울 열린데이터광장)”

뺀 칩과 까닭 — '6월 급증' 과 '+14.2%' 둘을 뺐다. 둘 다 잘린 그림에서만 나오는 말이다. +14.2% 는 바닥을 431.1만에 둔 그림의 보이는 변화율이지 데이터의 변화율이 아니고, '급증' 은 그 그림이 만든 인상이다. 차이를 크게 보이게 할 수 없다면 차이가 작다는 것 자체가 그 달의 사실이므로, 그것을 그대로 적는 것이 보고다.

+
더 알아보기

그림이 할 수 있는 가장 좋은 일과 가장 나쁜 일

미나르 1869 — 띠의 너비가 살아 있는 병력출발 42만 2천 명모스크바니에멘강에서돌아온 사람 1만 명되돌아오는 길(겨울)띠의 너비 = 살아 있는 병력 · 가로 = 지나온 길 · 아래 = 그날의 기온아래 선 = 후퇴하는 동안의 기온(°C)−30°(12월)0°(10월)한 장에 여섯 가지 — 병력 · 길 · 방향 · 날짜 · 기온 · 지명
역사

한 장에 여섯 가지를 담은 그림

오늘은 그림이 속이는 쪽만 보았으니, 반대쪽 끝도 하나 보겠습니다. 프랑스 토목기사 샤를 조제프 미나르가 1869년에 그린 나폴레옹의 1812년 러시아 원정 그림입니다.

가로로 흐르는 띠 하나에 병력 · 지나온 길 · 가는 방향 · 날짜 · 그날의 기온 · 지명 여섯 가지가 함께 들어 있습니다. 띠의 너비가 살아 있는 병사의 수예요. 니에멘강을 건널 때 42만 2천 명이던 띠가 모스크바에 닿을 무렵 실처럼 가늘어지고, 되돌아오는 길에서는 아래쪽 좁은 띠가 더 가늘어져 1만 명 남짓으로 끝납니다. 그 아래에는 후퇴하는 동안의 기온이 붙어 있어, 띠가 뚝 끊기는 자리마다 영하 30도에 가까운 날이 있었다는 것이 한눈에 보입니다.

에드워드 터프티는 이 그림을 두고 "지금까지 그려진 가장 좋은 통계 그래프일지 모른다"고 했습니다. 오늘 배운 지수로 보면 이 그림의 미덕이 분명해집니다 — 띠의 너비를 병력에 그대로 비례시켰고, 아무 데도 자르지 않았습니다. 좋은 그림은 덜 보여 주는 그림이 아니라, 속이지 않으면서 더 많이 보여 주는 그림입니다.

도해: 미나르 원본의 짜임(위 띠 = 진격 · 아래 띠 = 후퇴 · 맨 아래 = 후퇴 중 기온)을 다시 그렸다. 띠의 굵기와 기온 선의 모양은 원본의 뜻을 보이기 위한 것이고, 42만 2천 명 · 1만 명 · −30°C 는 원본에 적힌 값이다. · 출처: C. J. Minard, Carte figurative des pertes successives en hommes de l'Armée Française dans la campagne de Russie 1812–1813, 1869

1978 뉴욕타임스 — 연비 기준 18 → 27.5마일값은 +53%인데 선 길이는 +783% — 지수 14.81978년 · 18마일1985년 · 27.5마일선을 원근법 도로 위에 눕히고 글자까지 함께 키웠다 —값은 1.53배인데 그림에서는 8.83배로 읽힌다.1827.50부터 그린 막대 — 지수 1.00같은 두 숫자를 0부터 그리면1.53배가 그대로 1.53배로 보인다.터프티는 이 그림의 지수를14.8로 쟀다.
방법 더 깊이

거짓말 지수 14.8 — 터프티가 든 그림

거짓말 지수라는 말을 만든 터프티가 1983년 책에서 예로 든 그림이 있습니다. 1978년 뉴욕타임스가 실은 자동차 연비 기준 그래프예요. 기준은 1978년 갤런당 18마일에서 1985년 27.5마일로 오를 예정이었습니다. +53% 지요.

그런데 신문은 이 숫자를 원근법 도로 위에 눕혔습니다. 멀리 있는 1978년은 짧고 가늘게, 가까운 1985년은 길고 굵게 — 게다가 글자 크기까지 함께 키웠습니다. 그 결과 지면에서 선의 길이는 783% 길어졌습니다. 783 ÷ 53 = 14.8, 이것이 터프티가 잰 이 그림의 거짓말 지수입니다.

오늘 다룬 축 자르기(지수 10)보다도 큰 값인데, 수법은 다릅니다. 축을 자른 그림은 눈금을 보면 들통나지만, 원근법과 넓이는 눈금이 아예 없어 잴 자리가 없습니다. 같은 두 숫자를 0부터 막대 둘로 그리면 1.53배가 그대로 1.53배로 보입니다 — 지수 1.00. 고치는 일이 어렵지 않다는 것이 오히려 이 그림의 교훈입니다.

도해: 원근법 도로 위에 눕힌 원래 그림의 모식도와, 같은 두 값(18 · 27.5)을 0부터 그린 막대 둘. 53% · 783% · 14.8 은 터프티가 적은 값이다. · 출처: E. R. Tufte, The Visual Display of Quantitative Information, Graphics Press, 1983

같은 곡선, 두 축 — 보통 축과 로그 축보통 축 — 끝에서만 치솟는다010241101001000로그 축 — 같은 배율이 같은 간격두 배씩 커지는 같은 자료다. 로그 축에서 직선이면 '배율이 일정'이라는 뜻이지'느려졌다'는 뜻이 아니다 — 축 이름을 먼저 읽어야 한다.
현장

로그 축은 거짓말인가

감염병 확진자 수나 주가처럼 몇 배씩 커지는 양을 다루는 기사에서는 세로축 눈금이 1 · 10 · 100 · 1000 으로 붙은 그림을 자주 봅니다. 로그 축입니다. 보통 축에서는 눈금 사이 거리가 같으면 차이가 같다는 뜻이지만, 로그 축에서는 거리가 같으면 배율이 같다는 뜻이 됩니다.

그러니 두 배씩 커지는 자료는 로그 축에서 곧은 직선이 됩니다. 도해의 두 그림은 1 · 2 · 4 · 8 …로 커지는 똑같은 수열인데, 보통 축에서는 끝에서만 치솟는 곡선이고 로그 축에서는 직선입니다. 축을 잘라 만든 과장과 달리 이것은 속임수가 아닙니다 — 묻는 것이 "얼마나 늘었나"가 아니라 "몇 배로 늘었나"일 때 맞는 축이니까요.

다만 읽는 법을 모르면 오해가 생깁니다. 로그 축에서 곡선이 조금이라도 눕는 것을 보고 "증가가 멈췄다"고 읽기 쉬운데, 직선인 동안은 배율이 일정하게 유지되는 중입니다. 거짓말 지수로 잴 수 없는 종류의 오해예요 — 지수는 같은 종류의 축에서 길이를 견줄 때만 뜻이 있으니까요. 그래서 로그 축 그림에는 축 이름과 눈금의 뜻을 반드시 적습니다.

도해: 1부터 두 배씩 열 번 커지는 같은 수열을 보통 축과 로그 축으로 그렸다. 눈금 1 · 10 · 100 · 1000 은 10의 거듭제곱이다.