您如何可视化数百个类别的倾斜数据? 我一直在尝试一种新的图表形式来帮助解决这个问题。 我称它为“包装好的酒吧”。它是有序条形图和树状图的综合。 这是最近标准普尔 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 和堆叠条之间的区别可能是一个挑战。
但我认为这很值得探索,我更愿意*以这种格式绘制我的数据,而不是标准的树形图。
干得好。