我想知道如何将某个键功能与D3中的基准数据绑定相关联。 .data([values[, key]])
似乎可以实现这一点,但该密钥在.datum([value])
绑定中不作为参数提供。
这在绘制SVG路径时尤为重要,在这些路径中,更新后的值不会附加到数据数组的末尾,但会导致中间粒度的变化。
此示例说明了这种情况: http://jsfiddle.net/vastur/LtHyZ/1/
每个数据点都是[(x),(y)]元组。根据x轴上的关键功能,红点正在正确移动:
.data(lineData, function(d) {return d[0]})
但该行是使用datum()创建的,因此没有关键功能。因此,当在其间添加新数据点时,其线段会不合逻辑地移动。
那么,在这个例子中,如何根据红点的运动使线顶点移动?
答案 0 :(得分:1)
简短的回答是,对于您正在处理的案件,这是不可能的。问题是只有一个元素(行),因此匹配和计算连接没有意义。要实现所需的行为,您需要为两行指定相同数量的支持点。
稍微详细的解释。 D3数据模型依赖于将数据点绑定到DOM元素。也就是说,每个数据点恰好与一个DOM元素匹配。您绘制的路径是单个DOM元素,因此只有一个数据“点”与之匹配,在这种情况下,该点是一个数组。你不能将D3的数据模型用于你想要的东西 - 路径中只有一个DOM元素。此外,SVG路径是无法轻易破解的实体 - 在您的情况下需要M
命令开始,然后L
命令。您可以通过将线分成不同的段来进行,但动画不起作用(参见here)。
实现目标的方法是预处理数据以计算任何中间点。