堆叠策略
基于 D3 的 堆叠顺序 和 堆叠偏移,你可以修改序列的堆叠方式。
要传递这些属性,请使用序列属性 stackOffset
(条形图默认为 'diverging'
,折线图默认为 'none'
)和 stackOrder
(默认为 'none'
)。你可以只为一个堆叠组的其中一个序列定义它们。
堆叠偏移
如果你只想堆叠数值,将 stackOffset
设置为 'none'
应该可以满足需求。
然而,对于负值,你应该使用 'diverging'
。否则,堆叠的矩形会重叠。
要显示相对于其他堆叠序列的序列演变(而不是它们的绝对值),你可以使用 'expand'
。
值 | 描述 |
---|---|
'none' |
将基线设置为 0,并将数据彼此堆叠。 |
'expand' |
将基线设置为零,并将数据缩放至 1。 |
'diverging' |
将正值堆叠在零以上,负值堆叠在零以下。 |
下一个演示允许测试不同的 stackOffset
值。
要查看它们如何与包含负值的数据集交互,你可以切换 “数据包含负值” 开关。当打开时,序列将具有以下组成
- 序列 A 只有正值。
- 序列 B 有一个负值。
- 序列 C 和 D 只有负值。
堆叠顺序
堆叠数据的顺序对于图表的解读很重要。底部序列的演变最容易阅读,因为其基线为 0。
如果你知道你正在显示的数据,你可以使用 'none'
,它会尊重你在其中定义的序列顺序。否则,根据它们的属性对它们进行排序可能很有趣。
使用 'appearance'
,会考虑最大序列值的位置。
使用 'ascending'
和 'descending'
,会考虑数值的总和。这对应于序列在图表上占据的面积。
值 | 描述 |
---|---|
'none' |
尊重序列提供的顺序。 |
'reverse' |
反转序列提供的顺序。 |
'appearance' |
根据其最大值的索引按升序排列序列。最大值最早的序列将在底部。 |
'ascending' |
根据其数值的总和按升序排列序列。占据最小面积的序列将在底部 |
'descending' |
根据其数值的总和按降序排列序列。占据最大面积的序列将在底部 |
为了实验堆叠顺序,这里有一些关于用于上班的交通方式的统计数据,取决于家庭和办公室之间的距离。
使用 'appearance'
顺序,**步行** 将是第一个,因为它的最大百分比是针对 **0-1公里**。最后一个是 **公共交通**,因为它的最大值在 **>50公里** 距离。
使用 'ascending'
顺序,堆叠从 **自行车** 和 **摩托车** 开始,因为它们的值分别总计为 41.7 和 55.4。然后是 **步行** (值总计为 94.1)。最后,是 **公共交通** 和 **汽车**,它们在视觉上更重要。
'descending'
顺序则完全相反。