堆叠图(Stack)
该模块依赖数据项(keys)
其提供了原始数据数据(data)
中所需要堆积的数据项的条目。最终返回堆积数据(stackData)
。堆积数据包含原始数据数据(data)
中每一项的所占的起始值和结束值。详情见[基本数据](# 基本数据)。
基本数据
数据项(keys)
1 | ["apple", "samsung", "huawei", "oppo", "xiaomi", "others"] |
原始数据数据(data)
1 | const data = [ |
堆积数据(stackData)
这里计算完毕之后 给每个数据项赋了一个当前的原始数据,数据较长这里就不再贴出。详情数据见原始数据。
简单说明一下堆积数据
数据分为两层数组
第一层数据
1 | [[0,0.118],[0,0.124],[0,0.196],[0,0.157],key: "apple", index: 0] |
代表apple
的数据,。
其中key
字段即为数据项(keys)
中的值。index
反应的是apple
数据在堆积图中所占的位置0,就是代表处在首位。
第二层数据apple
中的四项,分别对应apple
的数据在data
中四项中所占的比例
。
1 | [0,0.118] |
第一项与第二项分别代表开始值
和结束值
。总值
1 | [ |
执行逻辑
- 根据提供的**数据项(keys)的长度创建堆积数据(stackData)**数组
- 遍历**原始数据数据(data)将原始数据中各个数据项的值写入堆积数据(stackData)**构建成
[0,value]
的格式 - 对**堆积数据(stackData)**中每个数据项目进行列循环,每一行的值等于上一行的值加上本行值的和
核心代码
1 | function stack(data) { |
参考 & 引用
https://www.jianshu.com/p/dac8d1d698d8
https://github.com/Yixian15/d3-tutorial/blob/master/marletShareStack.html