02단원이 다섯 번 같은 결론에 닿았습니다. 그림을 봐야 합니다.
앤스컴 자료 넷, 다섯 수가 같은 자료 셋, 상관이 인 완전한 관계, 합치면 뒤집히는 합격률이 전부 요약이 감춘 것을 그림이 드러낸 사례였습니다.
그런데 그림도 요약입니다. 그리는 방식에 따라 같은 자료가 다르게 보이며, 때로는 요약값보다 더 심하게 속입니다.
그래서 그림에도 문법이 필요합니다.
| 문법의 요소 | 정하는 것 |
|---|---|
| 미학 매핑 | 어떤 값을 어떤 보이는 성질에 옮길 것인가 |
| 기하 요소 | 점, 선, 막대, 넓이 중 무엇으로 그릴 것인가 |
| 척도 | 축의 범위와 로그 여부 |
| 좌표계 | 직교인가 극좌표인가 |
| 면 나누기 | 한 판인가 여러 판인가 |
이 강의는 그림을 그리지 않고 숫자로 다룹니다. 어느 채널이 얼마나 정확한지, 축을 자르면 차이가 몇 배로 부푸는지, 색표의 밝기가 얼마나 고른지는 전부 계산되는 값입니다.
문제. 값을 보이는 성질에 대응시킵니다.
(1) 보이는 성질을 정확도 순으로 정리하세요.
(2) 동그라미로 그릴 때 무엇을 값에 비례시켜야 하는지 계산하세요.
(3) 같은 자료를 다르게 그리는 방법을 정리하세요.
생각의 실마리. 그림은 자료의 값을 눈에 보이는 성질로 바꾼 것입니다. 그러면 어떤 성질이 값을 잘 전달하는지가 그림의 품질을 정합니다.
풀이. (1) 사람이 정확하게 읽는 순서가 있습니다.
| 정확도 순위 | 보이는 성질 | 무엇으로 읽는가 |
|---|---|---|
| 공통 축 위의 위치 | 같은 눈금에서 견줍니다 | |
| 다른 축 위의 위치 | 눈금이 달라 어렵습니다 | |
| 길이 | 끝이 안 맞으면 어렵습니다 | |
| 각도와 기울기 | 원그래프가 이것입니다 | |
| 넓이 | 원의 크기가 이것입니다 | |
| 부피와 굽은 정도 | 거의 못 읽습니다 | |
| 색의 진하기 | 순서만 겨우 읽습니다 |
가장 중요한 값을 가장 위쪽 성질에 옮깁니다. 두 값을 정확히 비교해야 한다면 같은 축 위의 점이나 막대로 그립니다.
(2) 동그라미로 그릴 때 무엇을 값에 비례시킬지 계산합니다. 값은 입니다.
| 반지름을 정하는 방법 | 반지름 비 | 넓이 비 | 값의 비 |
|---|---|---|---|
| 반지름을 값에 비례 | |||
| 넓이를 값에 비례 |
반지름을 값에 비례시키면 넓이가 배가 되어 값의 배를 크게 넘습니다.
눈은 동그라미에서 반지름이 아니라 넓이를 봅니다. 그래서 넓이를 값에 맞춰야 하고, 반지름은 값의 제곱근에 비례해야 합니다.
흔한 실수이며 값이 그 자리에서 네 배로 왜곡됩니다.
(3) 같은 자료를 여러 문법으로 그릴 수 있습니다.
| 바꾸는 것 | 무엇이 달라지는가 |
|---|---|
| 기하 요소 | 점을 선으로 바꾸면 순서가 생깁니다 |
| 좌표계 | 직교를 극좌표로 바꾸면 막대가 원그래프가 됩니다 |
| 척도 | 선형을 로그로 바꾸면 비율이 거리가 됩니다 |
| 면 나누기 | 한 판을 여러 판으로 나눕니다 |
| 통계 변환 | 원자료를 세거나 요약해 그립니다 |
둘째 줄이 중요합니다. 원그래프는 막대그림을 극좌표로 옮긴 것이며, 그 과정에서 길이가 각도로 바뀝니다. 정확도 순위에서 위가 위로 내려간 것입니다.
이 문제에서 배우는 것. 그림을 고르는 것이 아니라 매핑을 설계하는 것입니다. "막대그림을 쓸까 원그래프를 쓸까"가 아니라 **"이 값을 위치로 읽게 할까 각도로 읽게 할까"**가 진짜 질문이며, 답이 정해지면 그림의 종류는 따라옵니다. 163강 문제 1에서 중심을 고르는 것이 손실 함수를 고르는 것이었듯, 그림을 고르는 것은 채널을 고르는 것입니다.
바로 확인 1.
확인 1-1. 정확도가 가장 높은 두 채널을 쓰세요.
답. 공통 축 위의 위치와 다른 축 위의 위치입니다.
확인 1-2. 동그라미의 반지름을 무엇에 비례시켜야 하는지 쓰세요.
답. 값의 제곱근이며 넓이가 값에 비례해야 하기 때문입니다.
확인 1-3. 원그래프가 막대그림과 어떻게 이어지는지 쓰세요.
답. 막대그림을 극좌표로 옮긴 것이며 길이가 각도로 바뀝니다.
문제. 지각되는 크기를 계산합니다.
(1) 채널별 지수를 써서 실제 비와 느낀 비를 구하세요.
(2) 원그래프에서 각도를 읽는 어려움을 수치로 보이세요.
생각의 실마리. 문제 1의 순위는 어디에서 나왔는지 생각해 봅니다. 사람이 느끼는 크기가 물리량에 비례하지 않기 때문입니다.
풀이. (1) 느끼는 크기는 물리량의 거듭제곱에 비례합니다.
| 채널 | 지수 | 실제 배 | 실제 배 | 실제 배 |
|---|---|---|---|---|
| 길이 | ||||
| 넓이 | ||||
| 부피 | ||||
| 밝기 |
길이는 지수가 이라 그대로 보입니다.
| 옮긴 채널 | 느낀 비 | 참값 대비 오차 |
|---|---|---|
| 길이 | ||
| 넓이 | ||
| 부피 | ||
| 밝기 |
배 차이를 밝기로 옮기면 배로 보입니다. 실제의 삼분의 일도 안 되게 줄어듭니다.
그래서 큰 차이를 강조하려고 넓이나 색을 쓰면 반대 효과가 납니다. 차이를 살리고 싶으면 길이나 위치를 씁니다.
(2) 원그래프에서 각도를 읽어 봅니다. 다섯 조각의 몫이 입니다.
| 표현 | 값 | 가장 가까운 두 개의 차이 |
|---|---|---|
| 각도 | 도 | 도 |
| 몫 |
상대적 차이는 로 막대로 그릴 때와 똑같습니다. 같은 차이인데 각도로 읽으면 훨씬 어렵습니다.
두 원그래프를 나란히 놓으면 더 어렵습니다. 각 조각의 시작 각도가 앞 조각들에 딸려 있어 기준이 계속 움직이기 때문입니다. 막대는 모두 같은 바닥에서 출발합니다.
이 문제에서 배우는 것. 채널의 정확도 순위는 관습이 아니라 지각의 성질입니다. 지수가 보다 작은 채널은 큰 차이를 줄여 보이게 하고, 그 정도가 계산됩니다. 그래서 "원그래프를 쓰지 말라"는 규칙이 아니라 계산 결과이며, 조각이 둘이거나 전체 중 한 조각의 몫만 보이면 되는 경우에는 문제가 없습니다. 규칙을 외우는 것보다 왜 그런지를 아는 편이 예외를 다루기 좋습니다.
바로 확인 2.
확인 2-1. 느낀 크기와 물리량의 관계를 식으로 쓰세요.
답. 느낀 크기는 물리량의 제곱에 비례하며 가 채널마다 다릅니다.
확인 2-2. 검산에서 배 차이를 밝기로 옮기면 몇 배로 보이는지 쓰세요.
답. 배이며 오차가 입니다.
확인 2-3. 두 원그래프를 견주기 어려운 이유를 쓰세요.
답. 각 조각의 시작 각도가 앞 조각에 딸려 있어 기준이 계속 움직이기 때문입니다.
문제. 척도가 읽는 것을 얼마나 바꾸는지 봅니다.
(1) 막대그림에서 축의 아래끝을 바꿔 보세요.
(2) 로그 척도가 무엇을 직선으로 만드는지 확인하세요.
(3) 가로세로 비가 기울기를 어떻게 바꾸는지 계산하세요.
생각의 실마리. 막대는 길이로 값을 읽습니다. 그런데 길이는 축의 아래끝에서 재므로, 아래끝을 옮기면 길이가 값에 비례하지 않게 됩니다.
풀이. (1) 값 을 막대로 그립니다.
| 축의 아래끝 | 막대 길이의 비 | 값의 비 | 부풀린 배수 |
|---|---|---|---|
아래끝을 로 자르면 퍼센트 차이가 길이로 배가 됩니다.
막대는 반드시 에서 시작합니다. 길이가 곧 값이므로 아래끝을 옮기는 것은 값을 바꾸는 것과 같습니다.
그런데 모든 그림이 그런 것은 아닙니다.
| 그림의 종류 | 을 넣어야 하는가 |
|---|---|
| 막대 | 넣습니다. 길이가 값입니다 |
| 선 | 안 넣어도 됩니다. 기울기를 읽습니다 |
| 점 | 안 넣어도 됩니다. 위치를 읽습니다 |
| 넓이 | 넣습니다. 넓이가 값입니다 |
선그림에 을 넣으면 오히려 변화가 안 보입니다. 체온이 에서 로 오른 것을 부터 그리면 평평한 선이 됩니다. 무엇을 읽게 할 것인지가 규칙을 정합니다.
(2) 로그 척도를 봅니다. 해마다 퍼센트씩 자라는 값입니다.
| 척도 | 이웃 차이의 최소와 최대 | 최대와 최소의 비 |
|---|---|---|
| 선형 | ||
| 로그 |
로그 척도에서는 일정한 비율의 성장이 정확히 직선이 됩니다. 이웃 차이가 로 전부 같습니다.
선형 척도에서는 마지막 해의 증가가 첫 해의 배라 앞부분이 납작하게 눌립니다. 성장률이 일정한지 보고 싶으면 로그를 씁니다.
(3) 가로세로 비도 읽는 것을 바꿉니다.
| 가로세로 비 | 보이는 기울기의 각도 | 도와의 차이 |
|---|---|---|
같은 자료인데 판의 비를 바꾸면 추세가 가팔라 보이기도 완만해 보이기도 합니다.
기울기가 도에 가까울 때 가장 잘 읽힙니다. 아주 눕거나 아주 서면 두 기울기의 차이를 구별하기 어려워지므로, 평균 기울기가 도가 되도록 판의 비를 정하는 것이 권장됩니다.
이 문제에서 배우는 것. 축은 자료의 일부가 아니라 선택입니다. 그리고 그 선택이 결론을 바꿉니다. 아래끝 하나로 퍼센트를 배처럼 보이게 만들 수 있고, 판의 비 하나로 같은 추세를 급하게도 완만하게도 만들 수 있습니다. 그래서 그림을 볼 때 먼저 축을 봐야 하며, 172강이 그 진단을 다룹니다.
바로 확인 3.
확인 3-1. 막대그림이 에서 시작해야 하는 이유를 쓰세요.
답. 길이가 곧 값이라 아래끝을 옮기면 길이가 값에 비례하지 않기 때문입니다.
확인 3-2. 검산에서 아래끝을 로 잘랐을 때 부풀린 배수를 쓰세요.
답. 배입니다.
확인 3-3. 로그 척도가 직선으로 만드는 것을 쓰세요.
답. 일정한 비율의 성장이며 검산에서 이웃 차이가 전부 이었습니다.
문제. 색표를 고릅니다.
(1) 색을 쓰는 목적 셋을 정리하세요.
(2) 두 색표의 밝기가 한 방향으로 변하는지 확인하세요.
(3) 색각 이상에서 구별이 얼마나 남는지 계산하세요.
생각의 실마리. 색은 정확도 순위의 맨 아래입니다. 그러면 색은 값을 정확히 읽게 하는 데 쓰는 것이 아니라, 다른 목적에 써야 합니다.
풀이. (1) 색은 세 가지 목적으로만 씁니다.
| 목적 | 쓰는 색표 |
|---|---|
| 순서가 있는 양 | 한 방향으로 밝기가 변하는 색표 |
| 가운데가 뜻 있는 양 | 두 방향으로 갈라지는 색표 |
| 순서 없는 범주 | 밝기가 비슷하고 색조가 다른 색표 |
둘째 줄의 예가 온도 편차나 수익률입니다. 이 뜻을 가지므로 그 자리를 흰색으로 두고 양쪽으로 갈라집니다.
(2) 순서가 있는 양에 쓰는 색표는 밝기가 한 방향으로만 변해야 합니다.
| 색표 | 밝기 최소 | 밝기 최대 | 방향이 바뀐 횟수 |
|---|---|---|---|
| 무지개 | |||
| 비리디스 |
무지개 색표는 밝기가 세 번 방향을 바꿉니다. 그래서 흑백으로 뽑으면 순서가 사라집니다. 낮은 값과 높은 값이 같은 회색이 됩니다.
밝기 변화의 고르기도 봅니다.
| 색표 | 한 걸음 밝기 변화의 평균 | 표준편차 | 변동계수 |
|---|---|---|---|
| 무지개 | |||
| 비리디스 |
무지개는 걸음마다 밝기 변화가 들쭉날쭉해 없는 경계가 보입니다. 자료가 매끄럽게 변하는데 특정 값 근처에서 갑자기 띠가 생긴 것처럼 보입니다.
비리디스는 밝기가 고르게 오르도록 만들어진 색표입니다. 여기 쓴 색표는 몇 개의 기준색을 이어 근사한 것이라 값은 대략입니다.
(3) 색각 이상을 가진 사람이 남성의 퍼센트입니다.
| 두 색 | 보통 시각의 거리 | 적록 이상에서 | 남은 비율 |
|---|---|---|---|
| 빨강과 초록 | |||
| 파랑과 주황 | |||
| 검정과 노랑 |
빨강과 초록만 절반으로 줄고 나머지 둘은 그대로이거나 오히려 커집니다. 여기 쓴 변환이 거리를 그대로 두는 것이 아니므로 셋을 견주는 데만 씁니다.
빨강과 초록으로 좋고 나쁨을 나타내는 것이 가장 흔한 실수입니다. 파랑과 주황으로 바꾸면 거의 그대로 살아납니다.
그리고 색만으로 구분하지 않습니다. 모양이나 위치나 직접 붙인 이름을 함께 쓰면 색이 안 보여도 읽을 수 있습니다.
이 문제에서 배우는 것. 색은 정확한 값을 읽게 하는 채널이 아니라 묶음을 알아보게 하는 채널입니다. 그래서 색으로 값을 읽어야만 하는 그림은 이미 설계가 잘못된 것이며, 범례를 오가며 색을 맞춰 보게 만드는 그림도 마찬가지입니다. 그리고 색표를 고르는 일은 취향이 아니라 계산되는 성질을 확인하는 일입니다. 밝기가 단조인지, 걸음이 고른지, 색각 이상에서 남는지가 전부 수치로 나옵니다.
바로 확인 4.
확인 4-1. 색을 쓰는 세 가지 목적을 쓰세요.
답. 순서가 있는 양, 가운데가 뜻 있는 양, 순서 없는 범주입니다.
확인 4-2. 검산에서 무지개 색표의 밝기 방향이 몇 번 바뀌는지 쓰세요.
답. 번이며 흑백으로 뽑으면 순서가 사라집니다.
확인 4-3. 빨강과 초록으로 구분하면 안 되는 이유를 검산 값과 함께 쓰세요.
답. 적록 이상에서 거리가 배로 줄기 때문이며 파랑과 주황은 거의 그대로입니다.
문제. 그림에 담을 양을 정합니다.
(1) 점이 겹쳐 사라지는 정도를 계산하세요.
(2) 겹침을 다루는 방법을 정리하세요.
(3) 집단이 여럿일 때 겹쳐 그릴지 나눠 그릴지 정하세요.
생각의 실마리. 판의 크기가 정해져 있으면 구별되는 위치의 개수도 정해져 있습니다. 점이 그보다 많아지면 어딘가는 반드시 겹칩니다.
풀이. (1) 가로세로 칸으로 나눈 판에 점을 뿌립니다. 칸은 개입니다.
| 점의 개수 | 채워진 칸 | 보이는 비율 | 한 칸 평균 점 |
|---|---|---|---|
점이 만 개면 개만 보입니다. 나머지 퍼센트는 겹쳐 사라지며, 점을 더 그려도 그림이 바뀌지 않습니다.
그런데 겹친 곳이 검게 보이므로 밀도가 높다는 것은 알 수 있습니다. 문제는 얼마나 높은지 읽을 수 없다는 것입니다.
(2) 겹침을 다루는 방법이 넷입니다.
| 방법 | 무엇을 얻고 무엇을 잃는가 |
|---|---|
| 투명도 | 밀도가 보이지만 진한 곳이 뭉칩니다 |
| 흔들어 뿌리기 | 겹침이 풀리지만 값이 조금 틀립니다 |
| 칸으로 세기 | 밀도가 정확하지만 개별 점을 잃습니다 |
| 표본만 그리기 | 빨라지지만 드문 점을 놓칩니다 |
넷째 줄이 위험합니다. 표본만 그리면 드문 점이 사라지는데, 161강에서 본 것처럼 드문 점이 알고 싶던 것인 경우가 많습니다.
(3) 집단이 여럿일 때를 봅니다.
| 집단 수 | 겹쳐 그릴 때 짝 | 나눠 그릴 때 판 | 이웃한 판끼리 비교 |
|---|---|---|---|
겹쳐 그리면 모든 짝을 견줄 수 있습니다. 이면 개의 짝이 전부 한 판에 있습니다.
그런데 가 커지면 알아볼 수 없습니다. 선 개가 겹치면 어느 것이 어느 집단인지 구별되지 않으며, 색으로 개를 구별하는 것은 문제 4에서 본 대로 불가능합니다.
나눠 그리면 판마다 하나씩이라 깨끗합니다. 같은 축을 공유하므로 이웃한 판끼리는 정확히 견줄 수 있고, 문제 1의 정확도 순위에서 위인 공통 축 위의 위치를 씁니다.
다만 축을 판마다 다르게 두면 그 이점이 사라집니다. 판마다 축이 다르면 순위가 위인 다른 축 위의 위치로 내려갑니다.
마지막으로 그림에 쓴 잉크를 봅니다.
| 지울 후보 | 자료를 나타내는가 |
|---|---|
| 격자선 | 아닙니다. 옅게 하거나 지웁니다 |
| 테두리 상자 | 아닙니다. 지웁니다 |
| 눈금의 잔금 | 아닙니다. 줄입니다 |
| 막대의 무늬 | 아닙니다. 지웁니다 |
| 자료의 점과 선 | 그렇습니다. 남깁니다 |
자료를 나타내지 않는 잉크를 줄이면 남은 것이 눈에 들어옵니다. 다만 지우는 것 자체가 목적은 아니며, 읽기 어려워지면 되돌립니다. 격자선을 전부 지우면 값을 읽을 수 없는 그림이 됩니다.
이 문제에서 배우는 것. 한 그림에 담을 수 있는 양에는 물리적 상한이 있습니다. 판의 크기가 구별되는 위치의 개수를 정하고, 그것을 넘으면 자료를 더 넣어도 정보가 늘지 않습니다. 그래서 자료가 많을 때는 요약해서 그리거나 판을 나누는 것 말고 방법이 없으며, 어느 쪽이든 무엇을 잃는지 알고 골라야 합니다. 02단원 전체의 이야기가 그림에서도 되풀이됩니다. 그리는 것도 요약이고, 요약은 버리는 일입니다.
바로 확인 5.
확인 5-1. 채워진 칸의 기댓값을 식으로 쓰세요.
답. 입니다.
확인 5-2. 검산에서 점 만 개일 때 보이는 비율을 쓰세요.
답. 이며 개만 보입니다.
확인 5-3. 나눠 그릴 때 축을 공유해야 하는 이유를 쓰세요.
답. 공유하면 정확도 위인 공통 축 위의 위치로 읽고 다르면 위로 내려가기 때문입니다.
| 정확도 순위 | 채널 | 지수 |
|---|---|---|
| 공통 축 위의 위치 | ||
| 다른 축 위의 위치 | ||
| 길이 | ||
| 각도와 기울기 | 위치보다 낮습니다 | |
| 넓이 | ||
| 부피 | ||
| 밝기 |
| 문법의 요소 | 예 |
|---|---|
| 미학 매핑 | 값을 , , 색, 크기, 모양에 옮깁니다 |
| 기하 요소 | 점, 선, 막대, 넓이, 상자 |
| 척도 | 선형, 로그, 제곱근, 순서 |
| 좌표계 | 직교, 극좌표, 지도 투영 |
| 면 나누기 | 행, 열, 격자 |
| 통계 변환 | 세기, 요약, 매끄럽게 하기 |
| 축의 규칙 | 이유 |
|---|---|
| 막대는 에서 | 길이가 값입니다 |
| 선은 이 아니어도 됨 | 기울기를 읽습니다 |
| 비율 성장에는 로그 | 일정한 비율이 직선이 됩니다 |
| 기울기는 도 근처로 | 차이가 가장 잘 보입니다 |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 동그라미 반지름을 값에 비례시킵니다 | 넓이가 값의 제곱이 됩니다 |
| 큰 차이를 색이나 넓이로 표현합니다 | 차이가 줄어 보입니다 |
| 막대의 축을 잘라 씁니다 | 퍼센트가 배로 보입니다 |
| 무지개 색표를 씁니다 | 밝기가 세 번 뒤집힙니다 |
| 빨강과 초록으로 나눕니다 | 남성 퍼센트가 구별 못 합니다 |
| 점 만 개를 그대로 뿌립니다 | 퍼센트가 겹쳐 사라집니다 |
| 나눈 판마다 축을 다르게 둡니다 | 견줄 수 없게 됩니다 |
문제 6. 정확도가 가장 높은 채널 셋을 순서대로 쓰세요.
답. 공통 축 위의 위치, 다른 축 위의 위치, 길이입니다.
문제 7. 동그라미의 반지름을 무엇에 비례시켜야 하는지 쓰세요.
답. 값의 제곱근이며 넓이가 값에 비례해야 하기 때문입니다.
문제 8. 검산에서 반지름을 값에 비례시켰을 때 넓이 비를 쓰세요.
답. 으로 값의 비 를 크게 넘습니다.
문제 9. 원그래프가 막대그림과 어떻게 이어지는지 쓰세요.
답. 막대그림을 극좌표로 옮긴 것이며 길이가 각도로 바뀝니다.
문제 10. 느낀 크기와 물리량의 관계를 식으로 쓰세요.
답. 느낀 크기는 물리량의 제곱에 비례합니다.
문제 11. 검산에서 배를 넓이와 밝기로 옮겼을 때의 느낀 비를 쓰세요.
답. 와 입니다.
문제 12. 검산에서 축의 아래끝을 로 잘랐을 때 부풀린 배수를 쓰세요.
답. 배입니다.
문제 13. 막대와 선이 에 대해 다른 이유를 쓰세요.
답. 막대는 길이가 값이고 선은 기울기를 읽기 때문입니다.
문제 14. 로그 척도가 직선으로 만드는 것을 검산 값과 함께 쓰세요.
답. 일정한 비율의 성장이며 이웃 차이가 전부 이었습니다.
문제 15. 가로세로 비가 와 일 때 보이는 기울기를 쓰세요.
답. 도와 도입니다.
문제 16. 검산에서 무지개 색표의 밝기 방향이 몇 번 바뀌는지 쓰세요.
답. 번입니다.
문제 17. 검산에서 적록 이상일 때 빨강과 초록의 거리가 얼마나 남는지 쓰세요.
답. 배이며 파랑과 주황은 그대로입니다.
문제 18. 검산에서 점 만 개를 칸에 뿌렸을 때 보이는 비율을 쓰세요.
답. 입니다.
심화 1. 시각화 문법을 형식적으로 정리하세요.
그림 하나를 여러 층의 곱으로 봅니다.
각 층이 독립적으로 바뀝니다. 그래서 그림의 종류를 외우는 대신 층마다 무엇을 고를지 정하면 됩니다.
| 이름이 붙은 그림 | 층의 조합 |
|---|---|
| 히스토그램 | 막대 + 구간별로 세기 |
| 상자그림 | 상자 + 다섯 수로 요약 |
| 원그래프 | 막대 + 극좌표 + 몫으로 바꾸기 |
| 산점도 | 점 + 변환 없음 |
| 밀도 그림 | 선 + 매끄럽게 하기 |
셋째 줄이 문법의 힘을 보입니다. 원그래프를 따로 배울 필요가 없고, 막대에 좌표계만 바꾸면 나옵니다.
층이 곱이라 조합의 수가 폭발합니다. 그래서 문법은 새 그림을 만들 수 있게 합니다. 이름 붙은 그림의 목록에서 고르는 것이 아니라 필요한 조합을 조립합니다.
층의 순서도 뜻이 있습니다. 통계 변환이 척도 앞에 오는지 뒤에 오는지에 따라 다른 그림이 나오며, 로그를 씌운 뒤 평균을 내는 것과 평균을 낸 뒤 로그를 씌우는 것이 다릅니다. 163강의 기하평균과 산술평균이 그 차이입니다.
심화 2. 게슈탈트 원리를 정리하세요.
사람이 그림을 어떻게 묶어 보는지에 규칙이 있습니다.
| 원리 | 내용 | 그림에서 |
|---|---|---|
| 가까움 | 가까운 것을 한 묶음으로 봅니다 | 막대 사이 간격으로 집단을 나눕니다 |
| 비슷함 | 비슷한 것을 한 묶음으로 봅니다 | 같은 색이 같은 집단입니다 |
| 이어짐 | 끊긴 선을 이어서 봅니다 | 선그림의 결측 구간이 이어져 보입니다 |
| 닫힘 | 열린 도형을 닫아서 봅니다 | 테두리 없이도 영역이 보입니다 |
| 공통 운명 | 같이 움직이는 것을 묶습니다 | 애니메이션에서 집단이 드러납니다 |
셋째 줄이 위험합니다. 자료가 없는 구간을 선으로 이으면 없는 값을 있는 것처럼 보이게 합니다. 161강의 결측이 그림에서 조용히 채워지는 것이며, 끊어 그려야 합니다.
첫째 줄은 설계에 씁니다. 묶인 막대그림에서 집단 안의 간격을 집단 사이보다 좁게 두면 말하지 않아도 묶음이 보입니다.
게슈탈트는 저절로 작동합니다. 그래서 의도하지 않은 묶음이 생기기도 하며, 격자선이 자료보다 진하면 격자가 묶음으로 보입니다.
심화 3. 사전주의 처리를 정리하세요.
어떤 시각 성질은 찾지 않아도 즉시 눈에 들어옵니다.
| 성질 | 즉시 보이는가 |
|---|---|
| 색조 | 보입니다 |
| 크기 | 보입니다 |
| 방향 | 보입니다 |
| 움직임 | 보입니다 |
| 모양 | 조금 보입니다 |
| 두 성질의 조합 | 안 보입니다 |
마지막 줄이 핵심입니다. 빨간 점을 찾는 것은 개수와 상관없이 즉시 되는데, 빨갛고 동그란 점을 찾는 것은 하나씩 훑어야 합니다.
그래서 강조는 하나의 성질로만 합니다. 중요한 계열을 색으로 강조했으면 두께로 또 강조하지 않고, 두 개를 강조하면 둘 다 강조가 아니게 됩니다.
나머지를 흐리는 편이 더 셉니다. 하나를 진하게 하는 것보다 나머지를 회색으로 두는 것이 대비를 크게 만듭니다.
그리고 즉시 보이는 성질은 값을 정확히 읽는 것과 다릅니다. 문제 1의 순위는 정확도이고 여기는 찾는 속도라, 색은 정확도에서 꼴찌인데 찾기에서는 최고입니다. 목적에 따라 다른 표를 봐야 합니다.
심화 4. 지도와 왜곡을 정리하세요.
지도는 구면을 평면에 옮기는 일이라 반드시 왜곡이 생깁니다.
| 무엇을 지키는가 | 무엇을 잃는가 |
|---|---|
| 각도 | 넓이가 위도에 따라 부풉니다 |
| 넓이 | 모양이 찌그러집니다 |
| 거리 | 특정 방향으로만 지켜집니다 |
모두를 동시에 지킬 수 없다는 것이 정리로 증명되어 있습니다.
주제도에서는 넓이를 지키는 투영을 씁니다. 각도를 지키는 투영은 고위도의 넓이를 크게 부풀려 그 지역의 값이 과대 표현됩니다.
그리고 색으로 칠한 지도에는 더 큰 문제가 있습니다.
| 문제 | 내용 |
|---|---|
| 넓이가 무게가 됨 | 사람이 적은 넓은 지역이 눈에 크게 들어옵니다 |
| 밀도를 안 나눔 | 인구를 나누지 않은 건수는 인구 지도가 됩니다 |
| 경계가 임의적 | 행정구역이 현상과 무관할 수 있습니다 |
둘째 줄이 가장 흔합니다. 환자 수를 지도에 칠하면 인구가 많은 곳이 진해지는 것이 당연하므로, 인구로 나눈 비율을 칠해야 합니다.
대안이 카토그램입니다. 넓이를 값에 비례하도록 지역을 일그러뜨리는 것인데, 모양이 무너져 어디인지 못 알아보는 대가를 치릅니다.
심화 5. 애니메이션과 상호작용을 정리하세요.
시간을 축으로 쓰면 비교가 어려워집니다.
| 방법 | 비교의 성격 |
|---|---|
| 작은 배수 | 눈으로 동시에 견줍니다 |
| 애니메이션 | 기억으로 견줍니다 |
둘째 줄이 훨씬 어렵습니다. 사람의 시각 작업기억은 서너 개를 넘기기 어려우므로, 앞 장면을 기억해 지금과 견주는 것은 정확하지 않습니다.
그래도 애니메이션이 나은 경우가 있습니다. 같은 대상이 움직이는 것을 보여 줄 때인데, 심화 3의 공통 운명이 작동해 어느 점이 어디로 갔는지가 저절로 보입니다.
상호작용에도 비용이 있습니다.
| 이점 | 비용 |
|---|---|
| 원하는 부분을 확대할 수 있습니다 | 본 사람마다 다른 것을 봅니다 |
| 자료를 더 많이 담습니다 | 조작하지 않으면 아무것도 못 봅니다 |
보고서에 쓰는 그림은 상호작용이 없는 편이 낫습니다. 읽는 사람이 조작하지 않을 것이므로, 처음 보이는 화면 하나로 이야기가 끝나야 합니다. 상호작용은 탐색할 때 쓰는 도구입니다.
심화 6. 이 강의가 어디에 쓰이는지 정리하세요.
| 분야 | 쓰임 | 이어지는 강의 |
|---|---|---|
| 분포 그림 | 히스토그램과 밀도 | 169강 |
| 관계 그림 | 산점도와 매끄러운 선 | 170강 |
| 다변량 | 산점도 행렬과 차원축소 | 171강 |
| 진단 | 잘못된 그래프 가려내기 | 172강 |
넷째 줄이 이 강의를 뒤집어 쓰는 것입니다. 여기서 세운 규칙 하나하나가 어기는 방법의 목록이기도 합니다. 축을 자르고, 반지름을 값에 비례시키고, 무지개 색표를 쓰고, 판의 비를 조작하는 것이 전부 여기서 계산한 값만큼 왜곡합니다.
그래서 172강은 새로운 내용이 아니라 이 강의의 역방향입니다. 무엇이 왜곡을 만드는지 알면 그림에서 그것을 찾는 순서도 정해집니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| 미학 매핑 | aesthetic mapping | 값을 보이는 성질에 대응시킵니다 |
| 기하 요소 | geom | 점, 선, 막대 같은 그리는 단위입니다 |
| 척도 | scale | 값과 보이는 성질 사이의 변환입니다 |
| 면 나누기 | facet | 자료를 나눠 여러 판으로 그립니다 |
| 작은 배수 | small multiples | 같은 축을 공유하는 작은 판들입니다 |
| 스티븐스 법칙 | Stevens' power law | 느낀 크기가 물리량의 거듭제곱입니다 |
| 자료 잉크 비율 | data-ink ratio | 잉크 중 자료를 나타내는 몫입니다 |
| 과대 그리기 | overplotting | 점이 겹쳐 서로를 가립니다 |
| 흔들어 뿌리기 | jittering | 겹침을 풀려고 위치를 조금 흔듭니다 |
| 순차 색표 | sequential colormap | 한 방향으로 밝기가 변합니다 |
| 발산 색표 | diverging colormap | 가운데에서 양쪽으로 갈라집니다 |
| 비리디스 | viridis | 밝기가 고르게 오르는 색표입니다 |
| 사전주의 처리 | preattentive processing | 찾지 않아도 즉시 보이는 성질입니다 |
| 게슈탈트 원리 | Gestalt principles | 사람이 묶어 보는 규칙입니다 |
| 카토그램 | cartogram | 넓이를 값에 맞춰 일그러뜨린 지도입니다 |
다음은 169강 분포를 보는 그림입니다. 이 강의가 문법을 세웠고, 다음부터 그 문법으로 실제 그림을 조립합니다.
165강 문제 3에서 남긴 숙제가 그것입니다. 상자그림이 봉우리 둘인 자료를 감췄는데, 히스토그램은 그것을 보여 줍니다. 다만 히스토그램에도 선택이 있습니다. 구간의 폭과 시작점을 어떻게 정하느냐에 따라 같은 자료가 봉우리 하나로도 둘로도 보이며, 그 선택을 자료로 정하는 방법이 다음 강의의 주제입니다.
import numpy as np
rng = np.random.default_rng(20260905)
def pw(s, n):
k = n - sum(2 if ord(c) > 0x2FFF else 1 for c in str(s))
return str(s) + " " * max(k, 0)
def rw(s, n):
k = n - sum(2 if ord(c) > 0x2FFF else 1 for c in str(s))
return " " * max(k, 0) + str(s)
def to_lab(rgb):
c = np.asarray(rgb, dtype=float)
lin = np.where(c <= 0.04045, c / 12.92, ((c + 0.055) / 1.055) ** 2.4)
M = np.array([[0.4124, 0.3576, 0.1805],
[0.2126, 0.7152, 0.0722],
[0.0193, 0.1192, 0.9505]])
xyz = lin @ M.T
wp = np.array([0.95047, 1.0, 1.08883])
t = xyz / wp
f = np.where(t > 0.008856, np.cbrt(t), 7.787 * t + 16.0 / 116.0)
return np.stack([116 * f[..., 1] - 16,
500 * (f[..., 0] - f[..., 1]),
200 * (f[..., 1] - f[..., 2])], axis=-1)
def interp_map(pts, m=256):
u = np.linspace(0, 1, len(pts))
g = np.linspace(0, 1, m)
return np.stack([np.interp(g, u, np.asarray(pts)[:, j]) for j in range(3)], axis=1)
# --- 문제 1: 자료를 그림의 무엇으로 옮기는가 ----------------------------
print(" 그림은 자료의 값을 눈에 보이는 성질에 대응시킨 것입니다")
print(" %s %s %s" % (pw("정확도 순위", 12), pw("보이는 성질", 20), "무엇으로 읽는가"))
ch = [("공통 축 위의 위치", "같은 눈금에서 견줍니다", 1),
("다른 축 위의 위치", "눈금이 달라 어렵습니다", 2),
("길이", "끝이 안 맞으면 어렵습니다", 3),
("각도와 기울기", "원그래프가 이것입니다", 4),
("넓이", "원의 크기가 이것입니다", 5),
("부피와 굽은 정도", "거의 못 읽습니다", 6),
("색의 진하기", "순서만 겨우 읽습니다", 7)]
for a, b, c in ch:
print(" %s %s %s" % (rw(str(c), 12), pw(a, 20), b))
print(" 같은 값을 어느 성질에 옮기느냐가 그림의 정확도를 정합니다")
print(" 옮기는 규칙을 잘못 정하면 값이 그 자리에서 왜곡됩니다")
v = np.array([10.0, 20.0, 40.0])
print(" 값 %s 을 동그라미로 그립니다" % ", ".join("%.0f" % t for t in v))
r_bad = v / v[0]
r_good = np.sqrt(v / v[0])
print(" %s %s %s %s" % (pw("반지름을 정하는 방법", 22), rw("반지름 비", 20),
rw("넓이 비", 20), rw("값의 비", 20)))
print(" %s %s %s %s"
% (pw("반지름을 값에 비례", 22),
rw(", ".join("%.2f" % t for t in r_bad), 20),
rw(", ".join("%.2f" % t for t in r_bad ** 2), 20),
rw(", ".join("%.2f" % t for t in v / v[0]), 20)))
print(" %s %s %s %s"
% (pw("넓이를 값에 비례", 22),
rw(", ".join("%.2f" % t for t in r_good), 20),
rw(", ".join("%.2f" % t for t in r_good ** 2), 20),
rw(", ".join("%.2f" % t for t in v / v[0]), 20)))
print(" 반지름을 값에 비례시키면 넓이가 %.0f 배가 되어 값의 %.0f 배를 크게 넘습니다"
% ((v[2] / v[0]) ** 2, v[2] / v[0]))
print(" 눈은 동그라미에서 반지름이 아니라 넓이를 봅니다. 그래서 넓이를 값에 맞춥니다")
print(" 같은 자료를 여러 문법으로 그릴 수 있습니다")
print(" %s %s" % (pw("바꾸는 것", 20), rw("무엇이 달라지는가", 26)))
for a, b in [("기하 요소", "점을 선으로 바꾸면 순서가 생깁니다"),
("좌표계", "직교를 극좌표로 바꾸면 막대가 원그래프가 됩니다"),
("척도", "선형을 로그로 바꾸면 비율이 거리가 됩니다"),
("면 나누기", "한 판을 여러 판으로 나눕니다"),
("통계 변환", "원자료를 세거나 요약해 그립니다")]:
print(" %s %s" % (pw(a, 20), rw(b, 26)))
# --- 문제 2: 채널마다 얼마나 정확한가 -----------------------------------
print(" 사람이 느끼는 크기는 물리량의 거듭제곱에 비례합니다")
print(" 느낀 크기 = (물리량)^a 이고 지수 a 가 채널마다 다릅니다")
exps = [("길이", 1.00), ("넓이", 0.70), ("부피", 0.60), ("밝기", 0.50)]
print(" %s %s %s %s %s" % (pw("채널", 10), rw("지수 a", 10), rw("실제 2 배", 12),
rw("실제 4 배", 12), rw("실제 10 배", 12)))
for nm, a in exps:
print(" %s %10.2f %12.4f %12.4f %12.4f"
% (pw(nm, 10), a, 2.0 ** a, 4.0 ** a, 10.0 ** a))
print(" 길이로 그리면 10 배가 10 배로 보이고 밝기로 그리면 %.2f 배로 보입니다"
% (10.0 ** 0.5))
print(" 그래서 큰 차이를 넓이나 밝기로 옮기면 차이가 줄어 보입니다")
print(" %s %s %s" % (pw("옮긴 채널", 12), rw("느낀 비", 12), rw("참값 대비 오차", 16)))
for nm, a in exps:
print(" %s %12.4f %16.4f" % (pw(nm, 12), 10.0 ** a, 10.0 ** a / 10.0 - 1))
print(" 원그래프는 각도를 읽게 합니다. 각도는 길이보다 어렵습니다")
share = np.array([0.27, 0.24, 0.22, 0.15, 0.12])
ang = share * 360
print(" 다섯 조각의 몫이 %s 입니다" % ", ".join("%.2f" % t for t in share))
print(" 각도로는 %s 도이고 이웃한 두 조각의 차이가 %.1f 도뿐입니다"
% (", ".join("%.1f" % t for t in ang), float(np.min(-np.diff(ang)))))
print(" 상대적 차이는 %.4f 로 막대로 그릴 때와 똑같습니다"
% float(np.min(-np.diff(share))))
print(" 같은 차이인데 각도로 읽으면 훨씬 어렵습니다. 조각이 다섯이면 순위조차 헷갈립니다")
print(" 두 원그래프를 나란히 놓고 견주는 것은 더 어렵습니다")
print(" 각 조각의 시작 각도가 앞 조각들에 딸려 있어 기준이 계속 움직입니다")
# --- 문제 3: 축을 어떻게 정하는가 ---------------------------------------
print(" 축의 시작점이 차이를 얼마나 부풀리는지 봅니다")
a3 = np.array([96.0, 98.0, 100.0])
print(" 값 %s 을 막대로 그립니다" % ", ".join("%.0f" % t for t in a3))
print(" %s %s %s %s" % (pw("축의 아래끝", 12), rw("막대 길이의 비", 18),
rw("값의 비", 12), rw("부풀린 배수", 14)))
for lo in [0.0, 90.0, 95.0, 95.5]:
L = a3 - lo
print(" %s %18.4f %12.4f %14.4f"
% (pw("%.1f" % lo, 12), L[2] / L[0], a3[2] / a3[0],
(L[2] / L[0]) / (a3[2] / a3[0])))
print(" 아래끝을 95.5 로 자르면 4 퍼센트 차이가 길이로 9 배가 됩니다")
print(" 막대는 길이로 읽으므로 반드시 0 에서 시작합니다")
print(" 선그림은 다릅니다. 값이 아니라 변화를 읽으므로 0 을 넣으면 오히려 안 보입니다")
print(" %s %s" % (pw("그림의 종류", 16), rw("0 을 넣어야 하는가", 22)))
for nm, b in [("막대", "넣습니다. 길이가 값입니다"),
("선", "안 넣어도 됩니다. 기울기를 읽습니다"),
("점", "안 넣어도 됩니다. 위치를 읽습니다"),
("넓이", "넣습니다. 넓이가 값입니다")]:
print(" %s %s" % (pw(nm, 16), rw(b, 22)))
print(" 척도를 바꾸면 무엇이 직선이 되는지가 바뀝니다")
t3 = np.arange(0, 11, dtype=float)
y3 = 100.0 * (1.35 ** t3)
d1 = np.diff(y3)
d2 = np.diff(np.log(y3))
print(" 해마다 35 퍼센트씩 자라는 값입니다")
print(" %s %s %s" % (pw("척도", 14), rw("이웃 차이의 최소와 최대", 26),
rw("최대/최소", 12)))
print(" %s %26s %12.4f"
% (pw("선형", 14), rw("%.2f, %.2f" % (d1.min(), d1.max()), 26), d1.max() / d1.min()))
print(" %s %26s %12.4f"
% (pw("로그", 14), rw("%.4f, %.4f" % (d2.min(), d2.max()), 26), d2.max() / d2.min()))
print(" 로그 척도에서는 일정한 비율의 성장이 정확히 직선이 됩니다")
print(" 가로세로 비도 읽는 것을 바꿉니다. 기울기가 45 도에 가까울 때 가장 잘 읽힙니다")
print(" %s %s %s" % (pw("가로세로 비", 14), rw("보이는 기울기의 각도", 22),
rw("45 도와의 차이", 16)))
sl = 1.0
for ar in [0.25, 0.5, 1.0, 2.0, 4.0]:
deg = np.degrees(np.arctan(sl * ar))
print(" %s %22.4f %16.4f" % (pw("%.2f" % ar, 14), deg, abs(deg - 45)))
print(" 같은 자료인데 판의 비를 바꾸면 추세가 가팔라 보이기도 완만해 보이기도 합니다")
# --- 문제 4: 색을 어떻게 쓰는가 -----------------------------------------
print(" 색은 세 가지 목적으로만 씁니다")
print(" %s %s" % (pw("목적", 16), rw("쓰는 색표", 30)))
for nm, b in [("순서가 있는 양", "한 방향으로 밝기가 변하는 색표"),
("가운데가 뜻 있는 양", "두 방향으로 갈라지는 색표"),
("순서 없는 범주", "밝기가 비슷하고 색조가 다른 색표")]:
print(" %s %s" % (pw(nm, 16), rw(b, 30)))
jet = [(0.0, 0.0, 0.5), (0.0, 0.0, 1.0), (0.0, 1.0, 1.0),
(1.0, 1.0, 0.0), (1.0, 0.0, 0.0), (0.5, 0.0, 0.0)]
vir = [(0.267, 0.005, 0.329), (0.283, 0.141, 0.458), (0.254, 0.265, 0.530),
(0.208, 0.372, 0.553), (0.164, 0.471, 0.558), (0.128, 0.567, 0.551),
(0.135, 0.659, 0.518), (0.267, 0.749, 0.441), (0.993, 0.906, 0.144)]
print(" 순서가 있는 양에는 밝기가 한 방향으로 변해야 합니다")
print(" %s %s %s %s" % (pw("색표", 12), rw("밝기 최소", 12), rw("밝기 최대", 12),
rw("방향이 바뀐 횟수", 18)))
for nm, pts in [("무지개", jet), ("비리디스", vir)]:
lab = to_lab(interp_map(pts, 256))
L = lab[:, 0]
dd = np.sign(np.diff(L))
flips = int((np.diff(dd[dd != 0]) != 0).sum())
print(" %s %12.4f %12.4f %18d" % (pw(nm, 12), float(L.min()), float(L.max()), flips))
print(" 무지개 색표는 밝기가 오르내려 흑백으로 뽑으면 순서가 사라집니다")
print(" 밝기가 고르게 변해야 값의 차이가 고르게 보입니다")
print(" %s %s %s %s" % (pw("색표", 12), rw("한 걸음 밝기 변화의 평균", 26),
rw("표준편차", 12), rw("변동계수", 12)))
for nm, pts in [("무지개", jet), ("비리디스", vir)]:
L = to_lab(interp_map(pts, 256))[:, 0]
st = np.abs(np.diff(L))
print(" %s %26.4f %12.4f %12.4f"
% (pw(nm, 12), float(st.mean()), float(st.std()), float(st.std() / st.mean())))
print(" 무지개는 걸음마다 밝기 변화가 들쭉날쭉해 없는 경계가 보입니다")
print(" 비리디스는 밝기가 고르게 오르도록 만들어진 색표입니다")
print(" 여기 쓴 색표는 몇 개의 기준색을 이어 근사한 것이라 값은 대략입니다")
print(" 색각 이상을 가진 사람이 남성의 8 퍼센트입니다")
D = np.array([[0.625, 0.375, 0.0], [0.70, 0.30, 0.0], [0.0, 0.30, 0.70]])
pairs = [("빨강과 초록", (0.84, 0.15, 0.16), (0.17, 0.63, 0.17)),
("파랑과 주황", (0.12, 0.47, 0.71), (1.00, 0.50, 0.05)),
("검정과 노랑", (0.10, 0.10, 0.10), (0.95, 0.90, 0.20))]
print(" %s %s %s %s" % (pw("두 색", 14), rw("보통 시각의 거리", 18),
rw("적록 이상에서", 16), rw("남은 비율", 12)))
for nm, c1, c2 in pairs:
l1, l2 = to_lab(c1), to_lab(c2)
d0 = float(np.sqrt(((l1 - l2) ** 2).sum()))
s1 = np.clip(np.array(c1) @ D.T, 0, 1)
s2 = np.clip(np.array(c2) @ D.T, 0, 1)
d1c = float(np.sqrt(((to_lab(s1) - to_lab(s2)) ** 2).sum()))
print(" %s %18.4f %16.4f %12.4f" % (pw(nm, 14), d0, d1c, d1c / d0))
print(" 빨강과 초록만 절반으로 줄고 나머지 둘은 그대로이거나 오히려 커집니다")
print(" 쓰는 변환이 거리를 그대로 두는 것이 아니므로 셋을 견주는 데만 씁니다")
print(" 색만으로 구분하지 않고 모양이나 위치를 함께 씁니다")
# --- 문제 5: 한 그림에 얼마나 담는가 ------------------------------------
print(" 점이 많아지면 서로 겹쳐 개수를 읽을 수 없게 됩니다")
print(" 가로세로 200 칸으로 나눈 판에 점을 뿌립니다. 칸은 %d 개입니다" % (200 * 200))
cells = 200 * 200
print(" %s %s %s %s" % (pw("점의 개수", 12), rw("채워진 칸", 12),
rw("보이는 비율", 14), rw("한 칸 평균 점", 14)))
for n in [1000, 10000, 40000, 200000, 1000000]:
occ = cells * (1 - (1 - 1.0 / cells) ** n)
print(" %s %12.0f %14.6f %14.4f"
% (pw(str(n), 12), occ, occ / n, n / cells))
print(" 점이 100 만 개면 %.0f 개만 보입니다. 나머지는 겹쳐 사라집니다"
% (cells * (1 - (1 - 1.0 / cells) ** 1000000)))
print(" 겹침을 다루는 방법이 넷입니다")
print(" %s %s" % (pw("방법", 16), rw("무엇을 얻고 무엇을 잃는가", 34)))
for nm, b in [("투명도", "밀도가 보이지만 진한 곳이 뭉칩니다"),
("흔들어 뿌리기", "겹침이 풀리지만 값이 조금 틀립니다"),
("칸으로 세기", "밀도가 정확하지만 개별 점을 잃습니다"),
("표본만 그리기", "빨라지지만 드문 점을 놓칩니다")]:
print(" %s %s" % (pw(nm, 16), rw(b, 34)))
print(" 집단이 여럿이면 겹쳐 그리기와 나눠 그리기를 고릅니다")
print(" %s %s %s %s" % (pw("집단 수 g", 12), rw("겹쳐 그릴 때 짝", 16),
rw("나눠 그릴 때 판", 16), rw("이웃한 판끼리 비교", 20)))
for g in [2, 4, 8, 20]:
print(" %s %16d %16d %20d" % (pw(str(g), 12), g * (g - 1) // 2, g, g - 1))
print(" 겹쳐 그리면 모든 짝을 견줄 수 있지만 g 가 커지면 알아볼 수 없습니다")
print(" 나눠 그리면 같은 축을 공유해 이웃한 판끼리는 정확히 견줄 수 있습니다")
print(" 나눠 그릴 때 축을 판마다 다르게 두면 견줄 수 없게 됩니다")
print(" 그림에 쓴 잉크 중 자료를 나타내는 몫이 클수록 좋습니다")
print(" %s %s" % (pw("지울 후보", 20), rw("자료를 나타내는가", 20)))
for nm, b in [("격자선", "아닙니다. 옅게 하거나 지웁니다"),
("테두리 상자", "아닙니다. 지웁니다"),
("눈금의 잔금", "아닙니다. 줄입니다"),
("막대의 무늬", "아닙니다. 지웁니다"),
("자료의 점과 선", "그렇습니다. 남깁니다")]:
print(" %s %s" % (pw(nm, 20), rw(b, 20)))
print(" 다만 지우는 것 자체가 목적은 아닙니다. 읽기 어려워지면 되돌립니다")
# 그림은 자료의 값을 눈에 보이는 성질에 대응시킨 것입니다
# 정확도 순위 보이는 성질 무엇으로 읽는가
# 1 공통 축 위의 위치 같은 눈금에서 견줍니다
# 2 다른 축 위의 위치 눈금이 달라 어렵습니다
# 3 길이 끝이 안 맞으면 어렵습니다
# 4 각도와 기울기 원그래프가 이것입니다
# 5 넓이 원의 크기가 이것입니다
# 6 부피와 굽은 정도 거의 못 읽습니다
# 7 색의 진하기 순서만 겨우 읽습니다
# 같은 값을 어느 성질에 옮기느냐가 그림의 정확도를 정합니다
# 옮기는 규칙을 잘못 정하면 값이 그 자리에서 왜곡됩니다
# 값 10, 20, 40 을 동그라미로 그립니다
# 반지름을 정하는 방법 반지름 비 넓이 비 값의 비
# 반지름을 값에 비례 1.00, 2.00, 4.00 1.00, 4.00, 16.00 1.00, 2.00, 4.00
# 넓이를 값에 비례 1.00, 1.41, 2.00 1.00, 2.00, 4.00 1.00, 2.00, 4.00
# 반지름을 값에 비례시키면 넓이가 16 배가 되어 값의 4 배를 크게 넘습니다
# 눈은 동그라미에서 반지름이 아니라 넓이를 봅니다. 그래서 넓이를 값에 맞춥니다
# 같은 자료를 여러 문법으로 그릴 수 있습니다
# 바꾸는 것 무엇이 달라지는가
# 기하 요소 점을 선으로 바꾸면 순서가 생깁니다
# 좌표계 직교를 극좌표로 바꾸면 막대가 원그래프가 됩니다
# 척도 선형을 로그로 바꾸면 비율이 거리가 됩니다
# 면 나누기 한 판을 여러 판으로 나눕니다
# 통계 변환 원자료를 세거나 요약해 그립니다
# 사람이 느끼는 크기는 물리량의 거듭제곱에 비례합니다
# 느낀 크기 = (물리량)^a 이고 지수 a 가 채널마다 다릅니다
# 채널 지수 a 실제 2 배 실제 4 배 실제 10 배
# 길이 1.00 2.0000 4.0000 10.0000
# 넓이 0.70 1.6245 2.6390 5.0119
# 부피 0.60 1.5157 2.2974 3.9811
# 밝기 0.50 1.4142 2.0000 3.1623
# 길이로 그리면 10 배가 10 배로 보이고 밝기로 그리면 3.16 배로 보입니다
# 그래서 큰 차이를 넓이나 밝기로 옮기면 차이가 줄어 보입니다
# 옮긴 채널 느낀 비 참값 대비 오차
# 길이 10.0000 0.0000
# 넓이 5.0119 -0.4988
# 부피 3.9811 -0.6019
# 밝기 3.1623 -0.6838
# 원그래프는 각도를 읽게 합니다. 각도는 길이보다 어렵습니다
# 다섯 조각의 몫이 0.27, 0.24, 0.22, 0.15, 0.12 입니다
# 각도로는 97.2, 86.4, 79.2, 54.0, 43.2 도이고 이웃한 두 조각의 차이가 7.2 도뿐입니다
# 상대적 차이는 0.0200 로 막대로 그릴 때와 똑같습니다
# 같은 차이인데 각도로 읽으면 훨씬 어렵습니다. 조각이 다섯이면 순위조차 헷갈립니다
# 두 원그래프를 나란히 놓고 견주는 것은 더 어렵습니다
# 각 조각의 시작 각도가 앞 조각들에 딸려 있어 기준이 계속 움직입니다
# 축의 시작점이 차이를 얼마나 부풀리는지 봅니다
# 값 96, 98, 100 을 막대로 그립니다
# 축의 아래끝 막대 길이의 비 값의 비 부풀린 배수
# 0.0 1.0417 1.0417 1.0000
# 90.0 1.6667 1.0417 1.6000
# 95.0 5.0000 1.0417 4.8000
# 95.5 9.0000 1.0417 8.6400
# 아래끝을 95.5 로 자르면 4 퍼센트 차이가 길이로 9 배가 됩니다
# 막대는 길이로 읽으므로 반드시 0 에서 시작합니다
# 선그림은 다릅니다. 값이 아니라 변화를 읽으므로 0 을 넣으면 오히려 안 보입니다
# 그림의 종류 0 을 넣어야 하는가
# 막대 넣습니다. 길이가 값입니다
# 선 안 넣어도 됩니다. 기울기를 읽습니다
# 점 안 넣어도 됩니다. 위치를 읽습니다
# 넓이 넣습니다. 넓이가 값입니다
# 척도를 바꾸면 무엇이 직선이 되는지가 바뀝니다
# 해마다 35 퍼센트씩 자라는 값입니다
# 척도 이웃 차이의 최소와 최대 최대/최소
# 선형 35.00, 521.28 14.8937
# 로그 0.3001, 0.3001 1.0000
# 로그 척도에서는 일정한 비율의 성장이 정확히 직선이 됩니다
# 가로세로 비도 읽는 것을 바꿉니다. 기울기가 45 도에 가까울 때 가장 잘 읽힙니다
# 가로세로 비 보이는 기울기의 각도 45 도와의 차이
# 0.25 14.0362 30.9638
# 0.50 26.5651 18.4349
# 1.00 45.0000 0.0000
# 2.00 63.4349 18.4349
# 4.00 75.9638 30.9638
# 같은 자료인데 판의 비를 바꾸면 추세가 가팔라 보이기도 완만해 보이기도 합니다
# 색은 세 가지 목적으로만 씁니다
# 목적 쓰는 색표
# 순서가 있는 양 한 방향으로 밝기가 변하는 색표
# 가운데가 뜻 있는 양 두 방향으로 갈라지는 색표
# 순서 없는 범주 밝기가 비슷하고 색조가 다른 색표
# 순서가 있는 양에는 밝기가 한 방향으로 변해야 합니다
# 색표 밝기 최소 밝기 최대 방향이 바뀐 횟수
# 무지개 12.8937 97.1382 3
# 비리디스 14.9433 90.8818 0
# 무지개 색표는 밝기가 오르내려 흑백으로 뽑으면 순서가 사라집니다
# 밝기가 고르게 변해야 값의 차이가 고르게 보입니다
# 색표 한 걸음 밝기 변화의 평균 표준편차 변동계수
# 무지개 0.6204 0.4296 0.6925
# 비리디스 0.2978 0.1485 0.4988
# 무지개는 걸음마다 밝기 변화가 들쭉날쭉해 없는 경계가 보입니다
# 비리디스는 밝기가 고르게 오르도록 만들어진 색표입니다
# 여기 쓴 색표는 몇 개의 기준색을 이어 근사한 것이라 값은 대략입니다
# 색각 이상을 가진 사람이 남성의 8 퍼센트입니다
# 두 색 보통 시각의 거리 적록 이상에서 남은 비율
# 빨강과 초록 120.4860 67.4770 0.5600
# 파랑과 주황 122.3404 152.2542 1.2445
# 검정과 노랑 114.7767 105.7073 0.9210
# 빨강과 초록만 절반으로 줄고 나머지 둘은 그대로이거나 오히려 커집니다
# 쓰는 변환이 거리를 그대로 두는 것이 아니므로 셋을 견주는 데만 씁니다
# 색만으로 구분하지 않고 모양이나 위치를 함께 씁니다
# 점이 많아지면 서로 겹쳐 개수를 읽을 수 없게 됩니다
# 가로세로 200 칸으로 나눈 판에 점을 뿌립니다. 칸은 40000 개입니다
# 점의 개수 채워진 칸 보이는 비율 한 칸 평균 점
# 1000 988 0.987616 0.0250
# 10000 8848 0.884807 0.2500
# 40000 25285 0.632125 1.0000
# 200000 39730 0.198652 5.0000
# 1000000 40000 0.040000 25.0000
# 점이 100 만 개면 40000 개만 보입니다. 나머지는 겹쳐 사라집니다
# 겹침을 다루는 방법이 넷입니다
# 방법 무엇을 얻고 무엇을 잃는가
# 투명도 밀도가 보이지만 진한 곳이 뭉칩니다
# 흔들어 뿌리기 겹침이 풀리지만 값이 조금 틀립니다
# 칸으로 세기 밀도가 정확하지만 개별 점을 잃습니다
# 표본만 그리기 빨라지지만 드문 점을 놓칩니다
# 집단이 여럿이면 겹쳐 그리기와 나눠 그리기를 고릅니다
# 집단 수 g 겹쳐 그릴 때 짝 나눠 그릴 때 판 이웃한 판끼리 비교
# 2 1 2 1
# 4 6 4 3
# 8 28 8 7
# 20 190 20 19
# 겹쳐 그리면 모든 짝을 견줄 수 있지만 g 가 커지면 알아볼 수 없습니다
# 나눠 그리면 같은 축을 공유해 이웃한 판끼리는 정확히 견줄 수 있습니다
# 나눠 그릴 때 축을 판마다 다르게 두면 견줄 수 없게 됩니다
# 그림에 쓴 잉크 중 자료를 나타내는 몫이 클수록 좋습니다
# 지울 후보 자료를 나타내는가
# 격자선 아닙니다. 옅게 하거나 지웁니다
# 테두리 상자 아닙니다. 지웁니다
# 눈금의 잔금 아닙니다. 줄입니다
# 막대의 무늬 아닙니다. 지웁니다
# 자료의 점과 선 그렇습니다. 남깁니다
# 다만 지우는 것 자체가 목적은 아닙니다. 읽기 어려워지면 되돌립니다