2014-02-16 94 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。