私は現在、次のようにフォーマットされた JSON オブジェクトの配列から、データポイントに円を含むいくつかの折れ線グラフを組み立てています。
var data = [{
"name": "metric1",
"datapoints": [
[10.0, 1333519140],
[48.0, 1333519200]
]
}, {
"name": "metric2",
"datapoints": [
[48.0, 1333519200],
[12.0, 1333519260]
]
}]
各メトリックに色を付けたいので、配列データ内のオブジェクトのインデックスに基づいて色を付けようとしています。円を配置するための現在のコードは次のようになります。
// 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);
最後のビットを次のように変更すると:
circles.enter().append("circle")
.attr("r", 3.5);
.style("fill", function(d,i) { return i%2 ? "red" : "blue"; }
予想どおり、赤と青の円が交互に表示されます。Nested Selections : 'Nesting and Index'
からいくつかのアドバイスを受けて、試しました:
circles.enter().append("circle")
.attr("r", 3.5);
.style("fill", function(d,i,j) { return j%2 ? "red" : "blue"; }
おそらく、配列要素ではなく、名前付きプロパティのデータポイントにいるためです。データ構造を変更せずに、必要なカラーリングを行うにはどうすればよいですか? ありがとう!