「Data shows」| DS001. 雙坐標軸?絕對的反人類設計
對於研究過ggplot2的人而言,一個很奇怪的問題就是,為什麼ggplot2做雙坐標軸那麼難?(解決方案可以參見Stack Overflow的這個問題。)
作者給出的理由
但事實上,作者並不建議使用雙軸,這是他沒有在ggplot2提供相關解決方案的原因,可以參見這個答案。
摘錄如下:
Its not possible in ggplot2 because I believe plots with separate y scales (not y-scales that are transformations of each other) are fundamentally flawed. Some problems:
The are not invertible: given a point on the plot space, you can not uniquely map it back to a point in the data space.
They are relatively hard to read correctly compared to other options. See A Study on Dual-Scale Data Charts by Petra Isenberg, Anastasia Bezerianos, Pierre Dragicevic, and Jean-Daniel Fekete for details.
They are easily manipulated to mislead: there is no unique way to specify the relative scales of the axes, leaving them open to manipulation. Two examples from the Junkcharts blog: one, two
They are arbitrary: why have only 2 scales, not 3, 4 or ten?
You also might want to read Stephen Fews lengthy discussion on the topic Dual-Scaled Axes in Graphs Are They Ever the Best Solution?.
簡單地翻譯如下:
用ggplot2來話雙軸是不可能(譯者註:不過有其他ugly的解決方案),原因主要是因為我認為,雙軸本身就是有嚴重缺陷的。這裡例句一些可能的問題:
與其他可替代的方式而言,雙軸增加我們讀圖的難度。
雙軸更可能造成誤導(有意或無意):我們有不止一種方式改變坐標軸,這使得這種(輿論)操縱得以可能。
雙軸的選擇特別主觀:為什麼我們只選擇雙軸?不是3軸或4軸?
接下來,我們可以通過Hadley Wickham(什麼?你不認識他?回去好好看doc吧!)提供的幾個證據支持來更深入的理解為什麼Hadley沒有咋ggplot2里設置雙軸這一看似平常的屬性。
雙軸使得讀圖難度增大(相對地)
Hadley引用的論文A Study on Dual-Scale Data Charts中介紹了四種雙坐標圖:
一類稱作切斷圖(cutout chart),這是一種可轉為互動式的方案。圖的下方為整個數據,上方為一個特別關注的某一區間段的數據。
另一類為凸鏡圖(?,Lens Chart)。和切斷圖有點類似,但是往往是在一個子圖中展現,只是某個區段的坐標會放大。
另一類就是常見的疊加圖(Superimposed Chart),也就是我們常規說的雙坐標圖。作者在上面舉的例子就是Excel的方案(說好了不黑某軟的)。
最後一類被稱為斷軸圖(Broken Chart)。這種圖和切斷圖類似,區別是在於,斷軸圖是減去了部分信息然後再把軸拼起來的結果,所以理論上不會分為子圖,且某個坐標的值會有斷裂。
結果
這裡不贅述具體作者如何實施實驗的過程,只講一下作者使用的結果。論文作者實際上就是將讀圖任務區分為判斷位置,長度,斜率這三個任務,來判斷受試完成三個任務所需要的時間,結果如下:
首先,直接可以看出人對三種數據可視化的基本元素的敏感程度是:位置優於長度優於斜率(這提示我們在散點、動力圖時的方案,不過這是另一個問題了)。
其次,也是我們最關注的,我們可以發現,顯然,疊加圖的效果是最差的(沒錯,就是我們經常用的那種)。
最後,作者做出這5種圖(包括普通單軸圖)之間的錯誤、時間的顯著性差異
這裡不贅述了,圖已經很好地說明問題。
雙軸如何讓我們誤讀的
我們來看以下兩個用雙軸坐標的例子。
例子一:bar圖(柱狀圖)
下圖是一個很常見的例子,我們想展現4種商品出口、內銷額,如果直接採用Dodge型柱狀圖(不懂Dodge?Google一下,你會學得更多),會做出如下圖。
這張圖很好的表明,內銷額明顯高於出口額。但同時,這帶來一個問題:因為出口額的量較小,放在內銷的尺度下時,他們四者之間的比較不明顯了。
一個常見的雙軸解決方案如下:
Nice!我們可以看出出口額中四種商品之間的不同了。Wait a Minute!這帶來個問題了,這張圖強迫我們比較內銷、出口額之間的差距,但顯然,在這張圖中,出口內銷額之間的的高度是沒有意義的。顯然,這又不能讓我們比較之間的差距。
我們可以得出以下結論:
項目單軸雙軸表現不同x坐標的差距可以,但不夠明顯可以比較不同dodge之間數據的差距可以不可以是否造成誤讀,或延長讀圖時間不是是顯然,我們可以得出結論,兩個方案都有問題,但總的來說,單軸的優勢更多,更不會引起誤讀,或者你具有絕對強大的內心和邏輯思維能力,但你卻花了更多的時間用在「讓自己做數據上的聖人上」。顯然,優秀的設計不應該如此。
來看作者(略微UGLY)的解決方案(想省圖看來是不可能的了):
例子二:折線圖
這裡,我們想要比較的銷售額和銷售單位隨著月度變化的趨勢,一個簡單的例子就是畫出下列的折線圖
這張圖處理上有三點需要注意:
採用雙軸。
兩個軸的起始值不為0。
有交點。
作者認為,這種圖會強調折現交點的作用,而在這張圖中,折線交點是完全沒有意義的。
那,換成下面的方式呢?
顯然,我們還會被迫去比較兩個折線的高度,但在這裡,高度是完全沒有意義的,甚至,和銷售額比(這點要強調),銷售單位在某一時間段的降低也是沒有意義的!!!
因此,綜上所示,作者認為,雙軸應該是不值得提倡的,還是換成一下原始的樣子吧。
但如果實際情況中,我們還是需要比較這兩者之間的互動怎麼辦呢?作者想到的一個方案是採用比例的方式,如下圖:
雙軸可以操縱讀者!!!
雙軸不僅可以通過以上方式誤導讀者,一個更可怕的內容是,雙軸更可能涉及到數據行業的職業道德,因為,我們完全可以通過雙軸,人為創造一些結論。
如Hadley引用的兩個例子
本圖來源
這是來自Friedman《世界是平的》中的例子,是想說明產油地區的自由程度和油價的關係。博客作者認為,這顯然是有問題的,只要改變坐標軸,這個結論就會變化。
比如,這樣
再比如這樣
你可以做出多種方式,而每一種坐標的選擇都導致你最後的結果不一樣,包括變化的明顯程度以及交點發生的時間。因此,我們甚至可以說,採用雙軸是不道德的。
此外,還可以參見這個例子。
結論
雙軸(指疊加圖)會增加人讀圖的時間和困難(通過強迫讀者進行一些無效比較)。
雙軸導致混入分析師過多的主觀性,坐標軸的尺度選擇是隨機的。
雙軸可能會使讀者產生錯誤的結論。
因此,在此,可以簡單地做出結論,雙坐標軸是應該被避免的。
參考文獻
Stephen Few, Perceptual Edge(2008). Dual-Scaled Axes in Graphs: Are They Ever the Best Solution? Visual Business Intelligence Newsletter.
Isenberg, P., Bezerianos, A., Dragicevic, P., & Fekete, J.-D. (2011). A Study on Dual-Scale Data Charts. IEEE TRANSACTIONS ON VISUALIZATION AND COMPUTER GRAPHICS, 17(12).
推薦閱讀:
※30張數據科學&機器學習&深度學習必備表單
※美國橄欖球聯盟中裁判判罰方式的差異之數據可視化
※文章商品分類之數據標註
※「數據達人養成計劃」Live知識要點
※數據科學導論:數據收集與整理