2014-02-16 67 views
0

我使用D3从json数组中绘制线条。我可以从它的值得到它的x和y坐标,但我试图得到一个线名称,并将其分配给路径对象ID,但得到各种[对象对象}错误。 我使用的数组是: [{name:“line1”,x:1,y:1},{name:“line1”,x:1,y:2},{name:“line1”, x:1,y:5},]从D3与json值密钥对获取价值

对于不同的行,这是相同的,因为我可能需要在每个数据点中重复名称。

的代码是:

var width = 500, 
     height = 500, 
     margin = 50, 
     x = d3.scale.linear() 
       .domain([0, 10]) 
       .range([margin, width - margin]), 
     y = d3.scale.linear() 
       .domain([0, 10]) 
       .range([height - margin, margin]); 


var actionsD3 = [ 
[ {name: "line1", x: 1, y: 1},{name: "line1", x: 2, y: 2},{name: "line1", x: 3, y: 5},] 
]; 

var line = d3.svg.line() 
     .x(function(d){return x(d.page);}) 
     .y(function(d){return y(d.characterid);}); 

var lineName = d3.select() 
     .jsonData(function(d){return (d.name);}); 

svg.attr("height", height) 
     .attr("width", width); 

function render(data) { 
     svg.selectAll("path") 
         .data(data) 
       .enter() 
         .append("path") 
         .attr("class", "line") 
         .attr("id",function(d){return lineName(d);}) 
         .attr("d", function(d){return line(d);}); 
} 

render(actionsD3); 

我想什么是一样的,我得到的值x和y与d.x和d.y.行 但我似乎总是得到一对或一个数组。

感谢

+2

您发布的代码不起作用,但是从您的描述中可以看出'.attr(“id”,function(d){return d [0] .name;})''。 –

+0

真棒拉尔斯,完美的工作:-) – isaapm

+0

太好了,我会添加这个作为参考的答案。 –

回答

1

你张贴不起作用,但是从你的描述它会是这样.attr("id", function(d) { return d[0].name; })的代码。这个想法是,你传入一个数组来指定行,并从行的第一个点获取ID。