2013-03-06 160 views
20

我使用d3.js来绘制简单的线图。我想知道是否有办法在图表中创建“孔”,也就是说,如果在没有可用数据的情况下可以中断或切断该行。使用d3绘制不连续的线

我正在考虑删除我不需要的域名,或者在特定的段中将行权重设置为0,但我找不到任何一种方法。

感谢您的帮助!

回答

43

D3 line发电机有一个内置函数来做到这一点,line.defined。你可以使用这个函数来控制你的行的定义和不在的位置(比如你缺少数据的地方)。如果你想让你的行在undefined数组中的第二个值是一个javascript NaN值的时候没有定义,你可以说:

line.defined(function(d) { return !isNaN(d[1]); }); 

Here是一个很好的例子,在行动。

+0

你的例子不会工作(如预期的),因为如果'd'是'null',函数将永远不会被调用,或者不能确定未定义的位置在哪里(例如在x轴上)。在代码中使用的代码是'return d.y!= null'。 – Rouby 2015-03-09 13:37:05

+0

谢谢@Rouby。我已经从API文档的当前示例更新了答案。 – Josh 2015-03-09 22:37:44