2013-01-03 25 views
2

我想在D3中创建实时线形图。我的数据格式为[[日期,值],[日期,值]。当我没有收到任何数据时,数值将会是0.我希望这些数值的分界线不被绘制。然后我会在我的图表中找到缺少数据的空白。当没有数据时,在SVG路径中有间隙

任何人有任何想法我会怎么做?

+1

你有迄今为止编写任何代码 – Sirko

+0

我做什么,我已经创造了什么,我现在有一个JS提琴:http://jsfiddle.net/ srZwS/1 – dtsn

回答

1

您可以通过在一组轴上创建几个图来轻松完成此操作。每个连续的数据集将是一个单独的图。然后只要确保你给它们分配所有相同的颜色等。

+0

感谢您的快速回复,我试过这个想法,我只是觉得我的数据集太复杂了,我创建了一个JS小提琴http://jsfiddle.net/srZwS/1其中的细节出了问题,我在18:00 - 09:00没有数据,D3只是在两者之间划了一条直线,我不想加入 – dtsn

+0

你面临的问题是它确实不是正确的类型的图来表示不连续的数据,使用条形图会更合适(适合不连续的数据),使用线图必须将你分离出来r数据形成多行。 –

+0

你是完全正确的,应该使用条形图。我只有一个想要使用折线图的用户。 – dtsn

11

试试这个。变量my_dataset是具有属性{x,y}的对象的数组。 “楠:?作为y值在可视化跳过

var line = d3.svg.line() 
    .x(function(d, i) { return x(d.x); }) 
    .y(function(d) { return y(d.y); }) 
    .defined(function(d) { return !isNaN(d.y); }) 
    ; 

my_visualization.append("svg:path") 
    .data([ my_dataset]) 
    .attr("d", line) 
+2

你可以在这里找到一个很好的例子:http://bl.ocks.org/mbostock/3035090 –