您如何可視化數百個類別的傾斜數據? 我一直在嘗試一種新的圖表形式來幫助解決這個問題。 我稱它為“包裝好的酒吧”。它是有序條形圖和樹狀圖的綜合。 這是最近標準普爾 500 市值數據的打包條形圖的樣子。

藍色的“主要”條形圖和軸形成了一個規則的有序條形圖,顯示了按市值計算的 12 家最大的公司。 每個灰色的“次要”條代表其他公司之一。 如果空間允許,可以標記一些次要條,但它們的主要目的是為主要條提供上下文。 這個想法是支持焦點+上下文數據可視化原理。
我們可以大致了解有多少次要類別,它們的總大小是多少,甚至大小是如何分佈的。 而且由於它們與主條的比例相同,我們甚至可以根據它們在軸上的長度來估計一些值。 在動態顯示中,可以通過懸停標籤訪問二級類別的類別標籤和值。
右邊緣並不總是那麼均勻,但是通過從左到右首先放置較大的輔助條,通常效果很好。
例子
有時這些值是如此傾斜,以至於輔助填充不會超過主條。 按名義 GDP 繪製世界經濟圖表時就是這種情況。 這張緊湊的條形圖突出顯示了 192 個世界經濟體中的前七名。 (不完全一樣七國集團, 順便一提)。

僅選擇四個主要類別突出了美國經濟約佔世界名義 GDP 四分之一的事實。

如果次要類別的總和與主要條的比例相同,則可以像這樣將它們打包到單獨的條中。

經濟學並不是傾斜數據的唯一來源。 以下是尼卡地平藥物試驗數據的副作用計數。

條形的大小代表出現次數,顏色代表平均嚴重性。 輔助顏色仍然會褪色以保持主要類別的焦點,但如果更真實的顏色表示很重要,它們不必如此。
讓我走上這條道路的數據集是紐約市註冊狗名的集合。 這是我的創作,突出顯示了 16,000 多個名字中的前 25 個。

與其他打包的條形示例不同,輔助類別按字母順序逐行放置,以支持查找特定的狗名(借助懸停標籤)。 這種佈置的缺點是右邊緣明顯不太均勻。
擁有真正的 x 軸(與樹形圖不同)的一個優勢是能夠估計整個人口的總和。 在本例中,我們有 25 行,每行在計數軸上剛好超過 4,000。 我們可以估計狗的數量為 25 x 4,000+ = 100,000+。
尼卡地平示例顯示了對條形圖使用連續色標。 使用分類著色,褪色不太可能使顏色解釋複雜化。 在這個狗名字的視圖中,我用橙色來表示以“y”音結尾的名字。

變化
我一直在嘗試變化,上面的例子展示了其中的許多變化。 在構建打包條形圖時,我們可以從以下選項中進行選擇:
多少行? 有沒有好的一般默認值? 像 10 這樣的整數可以很容易地應用乘法技巧來獲得總和,但縱橫比可能更重要。
按大小從左到右放置輔助欄還是按字母順序逐行放置? 從左到右按大小表示,每個次條的左邊緣位置對應按大小排序,與行無關。 條形越大,越靠左。 從某種意義上說,這與按尺寸排序的主要條形圖一致,並且具有更清晰的右邊緣的好處。 將相同的尺寸放在一起可能有助於理解分佈。 逐行字母對於在交互式顯示中查找特定類別更有用。 二級條按字母順序從左到右放置內每一行,從第一行開始。
二級條的著色? 我一直在嘗試隨機灰色、褪色和真彩色。 隨機化灰色使分隔線變得不必要(避免連續重複的灰色)。
主要酒吧的標籤? 將標籤放在圖表區域之外的軸上可以避免在條形內擬合的約束。 但是將主要標籤放在條形圖內有助於將其與堆疊條形圖區分開來,並且更節省空間。
二級鋼筋的標籤? 我最初更喜歡沒有輔助標籤來強調他們的語境角色,但擁有一些標籤似乎對不太確定發生了什麼的新觀眾有很大幫助。
輔助鋼筋的單獨堆棧? 當數據如此偏斜以至於所有次要值的總和與主要條的比例相同時,“其他”堆棧是可行的。
將所有或部分二級條合併到一個實心“其他”區域? 這將保持大部分上下文方面,使右邊緣平滑,並減少顯示噪音。 但它放棄了一些關於次要大小的基數和分佈的信息。
備擇方案
與使用多種類別的偏斜數據可視化的替代方法相比,壓縮條如何?
- 相比一個條形圖在頂級類別中,壓縮條形圖獲得其餘類別的上下文。 主要缺點是輔助條使圖表變大(或主條縮小)並佔用可能用於標籤或註釋的空間。
- 相比樹狀圖, 打包條通常具有更準確的數據表示(軸上的條長度與沒有任何軸的區域),但更大的優勢是查看主要類別,這些類別獲得突出的標籤和軸對齊的大小。 然而,樹形圖支持嵌套和真正的空間填充(沒有鋸齒狀的右邊緣)。 在樹形圖中,微小的值可能會更好地表示,因為它更容易看到 3x4 像素的矩形而不是 1x12 像素的條。 雖然填充條中的軸帶來了準確性,但它們確實佔用了空間,使樹形圖更節省空間。
- 相比填充氣泡(如在原始狗名氣泡圖),填充條具有更規則的掃描位置,並且在表示數據值時長度優於圓形區域的感知優勢。 但是,與樹形圖一樣,微小的值可能更容易識別為氣泡(4 像素直徑的圓與 1x12 像素的條)。
- 相比一個一維散點圖,填充條為主要類別和累積和感添加突出的對齊標籤。 散點圖的優點是對所有值使用準確的位置編碼,並保持大小通道可用於另一個變量;但是必須通過抖動或閃避來應對過度打擊,這對於非常傾斜的數據可能會產生問題。
- 相比包裹棒,將條形重新組織成多個列,填充條更節省空間,有助於支持更多類別(1,000 個而不是 100 個),並且填充條增加了總面積感。 包裹棒支持更準確的閱讀“次要”條形值,因為它們的基數是對齊的,並且包裹條形應該具有較低的學習曲線,因為它們看起來更像常規條形圖。
缺點
對包裝酒吧的主要批評是與堆疊條,這導致人們相信每一行中的條是相互關聯的。 我使堆棧之間的間隙小於堆積條形圖的典型值,以試圖減少這種潛在的混亂,但我不確定它是否可以消除。 我希望優勢大於障礙。
其他缺點主要是權衡,可以通過上面列出的選項中的選擇來解決。 例如,如果隨機灰色看起來太分散注意力,則可以以其他方式對輔助條進行著色或合併在一起作為有意的簡化。
註釋指南
下一張照片不適合你;這是為那些只看圖片瀏覽帖子的人準備的。

在 JMP 中嘗試
雖然這項工作仍處於試驗階段,但我附上了一個 JSL 腳本,用於在JMP . 它首先將打包邏輯應用於數據,創建合成行號和顏色變量。 然後它在 Graph Builder 中創建一個規則的堆積條形圖,其中包含填充條形圖的顏色和排列。
你怎麼看?
我認為打包條對於某些類型的數據可能很有用,但我意識到我太投入了以至於無法客觀。 因此,我正在尋找有關這項工作的各個方面的反饋:佈局、術語、標籤、顏色等。如果您有可能從該展示中受益的數據,請告訴我——我可以使用我的原型為您試用.我一直發推文更多示例;如果您有興趣,請查看按性別命名的狗名和產品傷害計數. 如果您想嘗試在其他圖表平台上創建打包條形圖,那也很棒。
謝謝參觀!
2017 年 8 月更新:除了附帶的 JMP 腳本外,現在還有一個 Excel 插件和一個 d3.js 腳本,用於製作打包條形圖。 它們可以在packedbars github 區. 該插件是通過與 Excel dataviz 專家合作完成的,喬恩·珀爾帖. 一張包裝好的酒吧海報已被接受IEEE VIS十月會議。 海報提交需要25秒預覽視頻;附上帶有字幕而不是音頻的動畫 GIF 版本。
謝謝,馬克。 說到帕累托,我最近製作了一個動畫 gif,比較了隨著值數量的增加而填充的條形和帕累托。

贊:
看起來您的想法已被 Kaiser Fung 擴展到條形密度圖。
這些條很容易解釋。 打包的多邊形允許在打包的條形圖上顯示可能成為條子的區域。 不知道我是否在條形密度圖上出售...
ps 上個月我用打包的酒吧來分析和展示上面的秘密內容。 比標準的帕累托好得多!
很高興聽到,馬克 - 謝謝! 並感謝您使用真實數據進行嘗試。 很高興您了解了帕累托應用程序和按需詳細信息方面。
如果您有任何我可以使用的匿名“秘密資料”,請傳遞——有實際示例總是好的。
順便說一句,我一直在推特上的圖表庫。
遺憾的是,您無法在 JMP 13 中輕鬆控制條間距。 如果您真的想獲得效果,有一些技巧,但除此之外,腳本僅近似於打包的條形外觀。
贊:
涼爽的! 我運行了幾次,發現它是帕累托圖的一個很好的替代方案。 我從事製造改進工作。 我們經常使用 top10 圖表來幫助推動我們做正確的事情。 使用當前的帕累托平台,必須使用組合最後 (n-10) 個原因才能看到前 10 個。 (n-10) 個原因的細節被掩埋了。 打包的條形圖為我提供了一個很好的帕累托,其中包含樹形圖的詳細信息。

如何控制條形寬度/間距? 我的條之間有垂直間距。
通過這篇文章,我有一個有趣的反應進展:)
我最初的反應是“這不是什麼新鮮事,我們一直在做……哦,等等,不,那是不同的……”連續幾次。
我認為這種技術對於大型有序數據集有很大的潛力。 在我看來,它確實存在的任何缺點都已經存在於樹形圖中,並且這種技術改進了這些缺點。
我認為最初混淆的可能性很高。 在某些情況下,讓觀眾了解 this 和樹形圖或 this 和堆疊條之間的區別可能是一個挑戰。
但我認為這很值得探索,我更願意*以這種格式繪製我的數據,而不是標準的樹形圖。
不錯的作品。