読者です 読者をやめる 読者になる 読者になる

廿TT

譬如水怙牛過窓櫺 頭角四蹄都過了 因甚麼尾巴過不得

ぼくの考えたグラフ三原則

1. 良いグラフはフラットデザインである

ペンタッチの強弱はいらない

悪い例
f:id:abrahamcow:20141207055344j:plain
https://www.facebook.com/photo.php?fbid=512697988749263&set=a.459591227393273.110099.458478910837838&type=1

良い例
f:id:abrahamcow:20140102042216j:plain

良い例の方は、x=-1 or 1 のところでちょっとカクカクしています。悪い例の方は、ペンタッチの強弱でなめらかにみせています。
なめらかさ*1というのは大事な性質なので、それをごまかさないで欲しいのです。

グラデーションはいらない

グラデーションがあると、大小関係がごまかせます。
ごまかさないで欲しいのです。

悪い例
f:id:abrahamcow:20140102043308p:plain

良い例
f:id:abrahamcow:20140102043323p:plain

影・3D効果はいらない

影・3D効果は手前のものを大きく見せます。
そういうことはしないで欲しいのです。

悪い例
f:id:abrahamcow:20140102045922p:plain


良い例
f:id:abrahamcow:20140102045911p:plain


参考:
3D円グラフを使うのはやめよう | Okumura's Blog

2. 良いグラフはものさしで測れる

尺度が線形である、ということです。

例えば、アイコンが3つ並んでいるのを見て、「ふむ、アイコン2つより1つ多いな」と考えることに意味があるなら、それは意味のある可視化だと思います。

2次元のグラフであれば、縦軸と横軸に目盛りがあるのが基本です。

人間の目は、位置や長さを比べるのは得意ですが、相対的な角度や面積を比べるのは苦手なのです。

参考:
万能棒グラフ
不思議な円グラフを描くウェブサービス作ったよ - aikeの日記
ああああ: 円グラフやめろ ←ぼくの昔のブログ

> 3. display x axis in both sides, and each of them has individual scales?

ggplot2 will never support this because I think it's a really really bad idea.

R help - How to change the default location of x-axis in ggplot2?

3. 良いグラフは色に頼りすぎない

カラーユニバーサルデザインであるほうが、多くの人に伝わります。

参考:
統計グラフの色

色分けし過ぎると凡例と見比べるのが大変になります。

悪い例
f:id:abrahamcow:20140102044439p:plain

色に頼り過ぎると、プリンターやプロジェクターの性能によっては再現できなくなります。

白黒コピーしても伝わるようなグラフが理想ですね。

追記(2013年3月1日)

↑このハートのグラフ*2ですが、より良い例がありました。

f:id:abrahamcow:20140301173556p:plain

出典:
Shoot The Heart With Monte Carlo | (R news & tutorials)

R のコード:

library("ggplot2")
heart.up <- function(x) {sqrt(1-(abs(x)-1)^2)} #Upper part of the heart
heart.dw <- function(x) {acos(1-abs(x))-pi}    #Lower part of the heart
#Plot of the heart
ggplot(data.frame(x=c(-2,2)), aes(x)) +
  stat_function(fun=heart.up, geom="line", aes(colour="heart.up")) +
  stat_function(fun=heart.dw, geom="line", aes(colour="heart.dw")) +
  scale_colour_manual("Function", values=c("blue","red"), breaks=c("heart.up","heart.dw"))+
  labs(x = "", y = "")+
  theme(legend.position = c(.85, .15))

ggplot2 はグラフポリシーに則った作図がきれいにできるし、ggplot() の出力をオブジェクトとして持って、合成関数みたいにレイヤーを足し算していく感じで、コンセプトも合理的だと思うので、積極的に使っていきたいです。

参考:
Rのグラフィック作成パッケージ“ggplot2”について|Colorless Green Ideas

あと最近チャートジャンクという言葉を覚えました。

参考:
チャートジャンクとは何か - 情報グラフィックス・ノート

*1:導関数が不連続」ということばの意味を学ぶ前から、人間は「この辺ちょっとカクカクしてるなー」ということが直観的にわかります。数学を学ぶということは、自分の脳の働きを再発見する営みだと僕は思っています。

*2:はぁ? 「学校では習わない愛の方程式。素敵だ。」ってなんだよしゃらくせえケンカ売ってんのかコラ、というような話はここでは致しません。