글읽기

저작자 표시
신고

로또 500회 시각화 분석

연합뉴스에서 로또 500회 역사를 시각화한 작품을 공개했습니다:

http://www.yonhapnews.co.kr/medialabs/lotto/lotto.html

데이터 저널리즘이나 데이터 시각화, 인터랙티브 미디어 등에 관심을 갖고 이런저런 시도를 한다는 점은 매우 훌륭하다고 생각합니다.

다만 이번 작품의 경우 나쁜 시각화의 전형이라고 할만큼 문제가 많은 것 같아서 비판(당연히 주관적입니다)을 해보고자 합니다.


1. 색상과 레이아웃:

*   어두운 회색 배경에 흰색/밝은 회색 글씨로 구성되어 있어서 눈이 매우 피곤합니다.

*   게다가 배경의 땡땡이 텍스쳐가 가독성을 더욱 낮추고 있습니다. 명도차(연한 무채색 배경에 약간 진한 무채색 땡땡이 사이의 명도차)로 구성된 오밀조밀한 텍스쳐는 가독성을 해치는 전형적 사례입니다. (명도대비는 색상대비에 비해 오밀조밀한 디테일을 잘 담아내는 특성이 있습니다. 더 잘 담아낸다는 것은 지각적으로 튀어보인다는 뜻이죠. 의미 없는 배경이 튀어보이는 것은 좋지 않습니다. 명도대비의 이러한 특성은 fovea에 cone들이 배치된 패턴과 뇌에서 명도채널을 만들어내는 과정에서 기인)

*   잘못된 색 조합 때문에 가독성이 이렇게 낮은데 숫자를 제외한 나머지 글씨들의 크기는 너무 작아서 2560*1280 모니터에서 전체 화면으로 봐도 잘 안읽힙니다.

*   숫자만 보아도 의미와 흐름이 한 눈에 보인다면 상관 없지만 숫자만 봐서는 뭐가 뭔지 전혀 알 수도 없습니다.

*   각 섹션의 제목을 나타내는 색상(빨간색)과 강조색상(총 당첨금액의 숫자 부분 등)에 동일한 색상을 부여해서 혼란을 가중시키고 있습니다. 잘못된 컬러코딩의 전형입니다.



2. 시각화하면 좋을만한 것은 시각화를 안하고, 시각화를 안해도 되는 것들은 시각화를 하고 있습니다:

*   좌측의 회차별 당첨번호의 경우 로또 데이터의 성격상 당연히 시각화를 하면 랜덤 노이즈가 됩니다(로또가 원래 그런거라). "로또라는 것은 어차피 랜덤이니까 번호추천서비스 같은 것에 돈 쓰지 말고 그냥 아무 숫자나 찍으세요"라는 메시지를 전달하고 싶었다고 가정하더라도, 불필요하게 많은 공간을 쓰고 있죠.

*   좌측 하단의 번호별 당첨횟수 그래프는 의도치 않게 거짓말을 하는 그래프가 되었습니다. 이 그래프는 "특정 번호를 찍으면 당첨될 가능성이 높아요"라는 거짓말을 하고 있죠. 물론 로또 당첨 번호는 랜덤이니 그럴 일은 없습니다(분포가 고르지 못한 것은 패턴이 있기 때문이 아니라 시행이 500회 밖에 안됐기 때문입니다). 단, 당첨되었을 때 당첨금액을 높이는 방법은 있습니다. 남들이 안 찍을만한 번호를 찍으면 공동당첨될 가능성이 낮아지기 때문에 기대값을 높일 수는 있겠습니다. 물론 그래봤자 안 사는게 이득.

*   우측의 시도별 1등 당첨자수는 인구수와 1등 당첨자수를 빈도를 보여주는데, 데이터의 특성상 특정 시도에 당첨자가 편향될리 없습니다. 결국 인구수와 당첨자수의 상관계수가 아마 0.8은 넘을텐데 두 개의 막대그래프로 그려봤자 저런 모양이 나오는 것은 당연하겠죠. 인구수 대비 당첨자수를 나타내는 그래프(S. Few가 말하는 deviation analysis) 등으로 대체하면 공간도 절약되고 의미도 있겠죠(적어도 어떤 지역에서 로또가 더 유행하는지 정도는 알 수 있으니까요).

*   좌상단의 총당첨금액과 총판매금액은 "판매금액 대비 당첨금액이 훨씬 적으니 결국 로또를 사는 것은 손해이다"라는 핵심 메시지를 담고 있습니다. 하지만 시각화하지 않고 그냥 숫자로 쓰고 있죠. 우측 상단의 당첨확률 그래프 오른쪽에 1 / n 형태로 나열된 숫자들의 경우 자리수가 다르기 때문에 숫자 자체가 log scale 막대그래프와 유사한 역할을 하여 크기를 짐작할 수 있기라도 하지만(multi-functioning elements), 당첨금액 대비 판매금액은 자리수도 같아서 그런 효과도 노릴 수 없습니다.

*   우측 하단의 시도별 1등 당첨자수 비교는 그야말로 무슨 이야기를 하기 위해 있는지 알 수도 없습니다. 넣고 싶은 것은 다 넣었는데 공간이 남아서 이것저것 해보다가 아무거나 넣은 것이라고 밖에는 다른 설명을 상상하기도 힘드네요. 상단의 시도별 그래프와 색상을 맞춰주는 것도 아닌데 지역별 무지개색 컬러코딩도 아무 의미가 없고요.


저작자 표시
신고

부연: 글을 다시 읽어보니 부연할 부분들이 있는 것 같아서 추가합니다(승범아 고마워).

  • Squeak을 시각적 언어라고 하였는데 이는 잘못입니다. Squeak Etoys가 시각적 언어입니다.
  • 시각적 프로그래밍 언어에 대하여 "배우기 쉽게"라는 측면만 지나치게 강조되고 있는 것 같은데, 인지적 능력을 향상시켜주는 수단이라는 측면에서도 생각해보면 좋겠습니다. 예를 들어 데이터 시각화를 "통계를 모르는 초보자들이 숫자를 쉽게 이해하기 위한 것"으로만 보는 견해는 단견이라는 느낌과 비슷하게요. 이런 주장도 하고 싶었는데 글에 잘 드러나지 않은 것 같아요.


...


시각적 프로그래밍 언어라는 글을 읽고 이런저런 생각이 나서 의견을 적습니다.

요약하자면 1) 문법(syntax) 측면에서 기존 언어에 비해 크게 쉽다고 할 수 없고 2) 의미론(semantics) 측면에서도 개선점이 딱히 없으므로, 3) 특정 도메인에 특화된 언어(DSL)를 쉽게 익힐 수 있도록 하는 용도로 쓰는 것이 좋겠다는 내용입니다.

지금까지 나와있는 시각적 프로그래밍 언어들(Blocky, Squeak Squeak Etoys)에 대한 평가로서는 위 주장에 동의하고(시각적 언어에는 "문법이 존재하지 않는다"는 표현이나 몇몇 부분에는 동의하지 않지만 글의 전체적인 맥락에 동의), 앞으로의 가능성에 대한 평가로서는 동의하지 않습니다. 저는 시각적 프로그래밍 언어에 큰 가능성이 있다고 생각합니다.

일단 "시각적"이라는 말이 무엇인지 생각해보는게 중요하다고 봅니다. "눈을 통해 들어오는 자극"은 시각적이고 그렇지 않으면 비시각적이라고는 할 수는 없는게 그렇게 나누면 모든 언어가 시각적 언어이기 때문입니다. "비언어적 기호(사각형, 마름모, 직소퍼즐모양 등)의 공간상 배치를 적극적으로 활용하는 언어"가 시각적 언어라고 정의하면 현존하는 시각적 언어들을 대충 걸러낼 수 있지만, 이 정의에 기반해서 따져보면 앞으로 나올 시각적 언어들에 대해서도 별 기대를 안하게 됩니다(위 글의 전체적인 맥락에 동의하는 이유).

하지만 정의를 아래와 같이 바꿔보면 어떨까요?

"시각적 언어란 시지각의 특성을 잘 활용하는 언어이다"

시지각의 특성이란 2차원 평면으로부터 3차원을 구성해내는 능력, 특정 시각적 특성(visual features)을 선택적으로 뽑아내는 능력(tunable processing), 동일한 특성을 갖는 대상을 빠르게 뽑아내는 병렬처리 능력, 외각선 등 시각적 특성의 차이에 기반하여 사물 간의 경계를 찾아내는 능력 등을 잘 활용해야 한다는 것이죠.

이 관점에서  아래 Blocky 예시를 봅시다.

 

변수 접근은 붉은 색, 상수는 파란색, 제어문은 녹색 식으로 색상 부여(color coding)가 되어 있는데, "코드 상에 존재하는 변수를 전부 찾아내기"가 목적이라면 "빨간색을 모두 찾기"라는 시각적 질의를 수행하면 됩니다. 이런 질의를 뇌(Primary Visual Cortex)에서 병렬처리되므로 굉장히 효율적으로 수행됩니다. 하지만 별 의미가 없죠. 필요한건 "Count라는 변수만 모두 찾아내기"인데, 이런 의미 있는 작업은 시각적으로 잘 지원되지 않습니다.

조건문과 관련된 코드가 하나의 if 블럭 안에 들어 있기 때문에 코드를 단위로 묶어서 볼 수 있다는 점이 장점이라고 생각할 수도 있지만 아주 기괴한 언어가 아니라면 대부분의 프로그래밍 언어에서도 들여쓰기나 띄어쓰기를 통해 관련 코드 블럭을 시각적으로 묶어줄 수 있으므로 별 큰 차이가 없습니다(그런 의미에서 시각적 언어와 비시각적 언어를 가르는 경계는 모호합니다).

결국 어떤 시각적 질의를 잘 지원할 것인가(유사한 제어흐름을 갖는 코드블럭은 시각적으로 유사하다거나), 코드의 어떤 부분이 자동적으로 눈에 띄게(pop-out) 만들 것인가(대입문과 비교문이 확연히 달라보인다거나 등) 등을 좀 더 고민해보면 다양한 발전 가능성이 있지 않을까요.

에 또, 시각적 표현이 포함 관계(A가 B에 포함되어 있다), 관련성(A가 B에 연결되어 있다) 등을 보여주기엔 좋지만(이를테면 UML의 Class Diagram), 조건(if, but, maybe, perhaps)을 표현하기가 힘들다는 단점이 있습니다. 복잡한 로직이 들어가기 시작하면 언어적 표현이 따라오거나(UML의 주석이나 OCL), 애초에 언어적 표현은 그대로 남은채로 시각적 표현은 양념으로만 쓰이고 있었거나(Blocky를 보세요. 블럭을 몽땅 드러내도 정보가 거의 유지됩니다. 시각적 표현에 담긴 정보는 거의 redundent 하다는 것을 보여주죠). 하지만 이런 단점도 일부 해결할 수 있다고 생각합니다. 예를 들어 조건에 따른 분기를 정적인 포함관계로 변형한다거나 하는 식으로 의미에 대한 표상을 바꿀 수 있겠죠.

또, 문법과 의미론을 일치시키는 방향도 생각해볼만 합니다. 예를 들어 3+5 보다 xxx+xxxxx 등.

기타 등등 여러가지 가능성들이 있겠지만 일단 여기까지 끗. ^^;

저작자 표시
신고

정보시각화/통계적시각화 분야에서 가장 권위있는 사람을 한 명 뽑으라면 아마 Edward Tufte일텐데요, 번역서도 없고 원서 읽기도 쉽지 않아서 국내에 소개된 내용이 많지 않은 것 같습니다. 아마도 "데이터 잉크의 비율을 극대화하라" 정도의 내용이 간간히 인용되는 것 같습니다.

다음은 E.T의 연작 중 "The Visual Display of Quantitative Information" 및 "Visual Explanation"에서 이와 유사한 종류의 원칙들만 뽑아서 정리한 내용입니다.

Visual Explanation 독후감에서 밝힌 바와 같이 Colin Ware의 책(Visual Thinking for Design, 혹은 더 깊은 내용을 원하면 Information Visualization: Perception for Design)과 함께 보시길 권합니다.


Lie Factor

The representation of numbers, as physically measured on the surface of the graphic itself, should be directly proportional to the numerical quantities represented.

Lie Factor = size of effect shown in graphic / size of effect in data

--p54, The Visual Display of Quantitative Information

Data variation vs. Design variation

Show data variation, not design variation.

--p61, The Visual Display of Quantitative Information

Another way to confuse data variation with design variation is to use areas to show one-dimensional data. ... The number of information-carrying (variable) dimensions depicted should not exceed the number of dimensions in the data.

--p71, The Visual Display of Quantitative Information


Maximize Data-ink ratio

Data-ink ratio = data-ink / total ink used to print the graphic.

--p93, The Visual Display of Quantitative Information

* Above all else show the data.
* Maximize the data-ink ratio, within reason.
* Erase non-data-ink, within reason.
* Erase redundant data-ink, within reason.
* Revise and edit.

--p105, The Visual Display of Quantitative Information


Multi-functioning Graphical Elements

The principle, then, is: mobilize every graphical elements, perhaps several times over, to show the data. --p140, The Visual Display of Quantitative Information

Examples:

* Stem-and-Leaf Plot (p140, The Visual Display of Quantitative Information)
* Data-based Grids (p145, The Visual Display of Quantitative Information)
* Data-based Labels (p149, The Visual Display of Quantitative Information)

Data Density of a Graphic

Data density of a graphic = number of entries in data matrix / area of data graphic

--p162, The Visual Display of Quantitative Information


Small Multiples

Well-designed small multiples are

* inevitably comparative
* deftly multivariate
* shrunken, high-density graphics
* usually based on a large data matrix
* drawn almost entirely with data-ink
* efficient in interpretation
* often narrative in content, showing shifts in the relationship between variables as the index variable changes (thereby revealing interaction or multiplicative effects).
* Small multiples reflect much of the theory of data graphics:

For non-data-ink, less is more.

For data-ink, less is a bore.

--p175, The Visual Display of Quantitative Information


The principle of data/text integration

Data graphics are paragraphs about data and should be treated as such.

--p181, The Visual Display of Quantitative Information


The smallest effective difference

Make all visual distinctions as subtle as possible, but still clear and effective. ... In designing information, then, the idea is to use Just Notable Differences(not Just Noticeable Differences), visual elements that make a clear difference but no more - contrasts that are definite, effective, and minimal.

--p73, Visual Explanations

Quantitative measures of the informational performance of a screen

The proportion of space on the screen devoted to content, to computer administration, and to nothing at all; character counts and measures of typographic density (making comparisons with printed material as well as computer interfaces); the umber of computer commands immediately available (more are better, if clearly but minimally displayed).

Applied thoughtfully, these measures may hep to restrain the spatial imperialism of operating systems and of interface metaphors - and thereby enhance the richness of content displayed.

--p150, Visual Explanations

저작자 표시
신고

글 읽기

저작자 표시
신고

데이터 시각화 공부하기

저작자 표시
신고

블로그를 옮겼습니다: [글 읽기]


저작자 표시
신고

예전부터 고민하던 문제인데 자꾸 미루게 되어서 일단 질러놓고 봅니다. 연재 형식으로 쓰려고 하며, 예상 독자는 게임 기획자나 웹 기획자 혹은 기획에 관심있는 개발자 입니다. 주제는 아래와 같으며 순서나 일정은 미리 정하지 않았습니다.

  • 복잡한 논리의 흐름을 몇 가지 기본적인 단위로 분해하는 방법
  • 거대한 개념을 작은 단위로 나누는 다양한 방법
  • 구체화되지 않은(혹은 의도적으로 구체화하지 않은) 매우 추상적인 개념을 효과적으로 다루는 방법
  • 서로 다른 여러 개념 사이의 공통점을 찾아내는 방법
  • 생각을 정리하기 위한 정보 시각화 방법
  • 효과적인 의사소통을 위한 정보 시각화 방법
  • 특정한 기획 요소의 변화가 다른 기획 요소에 미치는 영향을 추적하고 관리하는 방법

거의 모든 주제가 “논리적이고 체계적인 사고”에 대한 것입니다. 따라서 독자께서 이런 생각을 하실 수도 있습니다:

기획은 논리만으로 되는 것이 아니다. 기획자는 사용자의 이성적 측면 뿐 아니라 감성적 측면도 고려해야 한다.

이러한 의문에 대해서는 두 가지 생각을 가지고 있습니다.

첫째, 기획의 모든 면을 다루는 것은 이 연재의 목적이 아닙니다. 그러기에는 제 지식이나 경험이 턱없이 부족합니다.

둘째, 감성과 논리는 대치되는 개념이 아닙니다. 논리라고 하면 보통은 ‘이성’에 대한 것으로 한정지어 생각하는 경향이 있는데 감성이나 도덕에도 논리가 있습니다. 감성적 측면을 다루는 능력이 진정 중요하다고 생각한다면 인간의 감성을 지배하는 논리를 파악하고 이를 체계적으로 다루는 기술을 연마해야 한다고 생각합니다. 이 중 감성의 논리를 파악하기 위해 필요한 내용(심리학, 사회학, 생물학, 미학 등)은 아마도 이번 연재의 범위에 포함되지 않을 것이고, 파악된 논리를 체계적으로 분석하고 활용하기 위해 필요한 내용을 주로 다룬다고 보면 될 것 같습니다.

이런 종류의 글을 쓰기에 더 적합할 것 같은 분들이 주위에 좀 계셔서 부담스럽지만 스스로 공부도 할겸 제가 먼저 깝쭉 나대보려고 합니다. ㅋ

앞으로 연재가 진행되는 동안 댓글로 의견/제안/질문 등을 남겨주시면 큰 도움이 되겠습니다. :-)

신고

예전에 Flickr User Model을 보고 감동받은 적이 있는데요:

Flickr User Model, v0.3 by soldierant.


이런 그림을 몇 장 더 찾았어요.

Gobbledy Gook, Pt. 2 by soldierant.

Gobbledy Gook,Pt. 2


The Importance of User Experience by soldierant.

The Importance of User Experience

이런 그림 한 장 열어놓고 한 시간 내내 떠드는, 그런 방식의 발표를 한번 해보면 재밌겠어요. 필요하면 zoom-in 해가면서.

저작자 표시
신고
< Newer     Older >

티스토리 툴바