내 주요 문제는 내 데이터가 모든 d3 데모와 정확히 같지 않다는 것입니다. 그래서포인트가있는 d3 꺾은 선형 차트의 문제
var line = d3.svg.line()
.x(function(d) { return x(d.x); })
.y(function(d) { return y(d.y); });
// data is a list of objects, each of which respresents a line
var series = svg.selectAll(".series")
.data(dataSimplified)
.enter().append("g")
.attr("class", "series");
series.append("path")
.attr("class", "line")
// the following function requires a list of things, like [{x0, y0}, {x1, y1}, ... {xn, yn}]
.attr("d", function(d) { return line(d.values); })
.style("stroke", function(d) { return color(d.name); });
그것은 기본적으로 각 "값"필드을 반복하여 수행합니다
[{"name":"someName", "values":[{x1, y1}, {x2, y2}, ... {xn, yn}, ...]
그래서이 코드 라인을 위해 잘 작동합니다 : 나는 양식에 내 모든 데이터를 정규화 플러그인을 만들어 x와 y를 얻기위한 라인 함수. 그러나 만약 내가 비슷한 점을한다면, 그것은 효과가 없습니다! 그러나 다음은 작동합니다.
// add points
for(var i=0; i<dataSimplified.length; i++){
for(var j=0; j<dataSimplified[i].values.length; j++){
svg.append("circle")
.attr("r", 3.5)
.attr("cx", function(d){ return x(dataSimplified[i].values[j].x); })
.attr("cy", function(d){ return y(dataSimplified[i].values[j].y); })
.attr("fill", function(d){ return color(dataSimplified[i].name); });
}
}
포인트를 하나씩 추가하는 것보다 더 좋은 방법이 있습니까? 왜 cx가 경로와 같은 목록을 받아들이지 않습니까?
[중첩 선택] (http://bost.ocks.org/mike/nest/)이 필요합니다. –