缺少数据时如何在D3.js中拆分行

缺少数据时如何在D3.js中拆分行,d3.js,D3.js,我的数据源可能缺少数据,例如: 2013年7月1日1 7/2/13 2 7/3/13 3 7/4/13 4 7/5/13 5 7/8/13 8 7/9/13 9 当我使用d3.svg.line().x(x).y(Y1)时,其中x和y是我的访问器函数。它将画一条连续的线。我想知道如何将它分成两行,这样就可以很容易地看到丢失的日子 我的意思是我应该得到一条1到5的线,然后是一条8到9的线。5到8之间没有连接。有一种方法可以指定是否定义了数据,至少在当前版本的d3中有: d3.svg.line()

我的数据源可能缺少数据,例如:

2013年7月1日1

7/2/13 2

7/3/13 3

7/4/13 4

7/5/13 5

7/8/13 8

7/9/13 9

当我使用d3.svg.line().x(x).y(Y1)时,其中x和y是我的访问器函数。它将画一条连续的线。我想知道如何将它分成两行,这样就可以很容易地看到丢失的日子


我的意思是我应该得到一条1到5的线,然后是一条8到9的线。5到8之间没有连接。

有一种方法可以指定是否定义了数据,至少在当前版本的d3中有:

d3.svg.line()
    .defined(function(d){return d.y != null && d.y != undefined})
或与以下方面有关:

d3.svg.area()
    .defined(function(d){return d.y != null && d.y != undefined})
这对我来说是个奇迹

当数据未定义时,将出现一个陡峭的悬崖。 请查看以下示例:


D3默认情况下不会执行此操作。你必须画几行或者实现一个自定义的行生成器。可能的@Josh重复:它不是重复的,因为我在数据集中没有空值。它完全不见了。根本没有数据。也许这正是你需要做的,插入空值。是的,这就是我最后要做的。我在JS代码中为缺少的日期添加了空值。这两个代码块之间的区别是什么?你的意思是第一个问题中的
d3.svg.line()
?如果数据的结构与问题中的一样,这将无法解决问题。问题是。defined()仅对数组中存在且可以识别的元素调用。当缺少的元素在数据数组中不表示时,.defined()将不起作用。