에서 색칠 여러 줄 나는 현재하고 너무 같은 형식 JSON 개체의 배열에서 데이터 포인트에서 원 일부 선 그래프를 조립 해요 :D3 : 중첩 된 데이터
나는 각 메트릭에 대한 색상을 갖고 싶어var data = [{
"name": "metric1",
"datapoints": [
[10.0, 1333519140],
[48.0, 1333519200]
]
}, {
"name": "metric2",
"datapoints": [
[48.0, 1333519200],
[12.0, 1333519260]
]
}]
, 그래서 나는 배열 데이터 내의 객체 의 인덱스를 기반으로 그들을 색칠하려고합니다. 나는 빨간색과 파란색 원을 교대로받을
circles.enter().append("circle")
.attr("r", 3.5);
.style("fill", function(d,i) { return i%2 ? "red" : "blue"; }
예상 할 수 있기 : 내가 좋아하는 뭔가를 마지막 비트가 있음을 변경하는 경우 이제
// We bind an svg group to each metric.
var metric_groups = this.vis.selectAll("g.metric_group")
.data(data).enter()
.append("g")
.attr("class", "metric_group");
// Then bind a circle for each datapoint.
var circles = metric_groups.selectAll("circle")
.data(function(d) { return d.datapoints; });
circles.enter().append("circle")
.attr("r", 3.5);
: 난 그냥 원을 배치하기위한 현재이 코드는 같다 . Nested Selections : 'Nesting and Index'에서 몇 가지 조언을 촬영
, 나는 시도 :
circles.enter().append("circle")
.attr("r", 3.5);
.style("fill", function(d,i,j) { return j%2 ? "red" : "blue"; }
작동하지 않는 (j는 정의되지 않는다), 우리는 오히려 배열 요소보다는 명명 된 속성 데이터 포인트에 아마도 때문이다. 데이터 구조를 변경하지 않고 원하는 채색 작업을 수행하려면 어떻게해야합니까? 감사!
서클 대신 그룹에서 스타일을 설정하여이 문제를 해결했습니다 (왜 스택 오버플로를 생각하면 게시되는 걸까요?). 나는 그룹 내에서 원과 경로가 다른 스타일을 원하거나 자녀의 속성이 어떤 이유로 든 상속 될 수없는 무언가 인 경우와 같이 해결 방법이 적은 답변을 고맙게 생각합니다. –