着色多行我目前組裝與數據點內有一定的線圖,從格式化像這樣JSON對象的數組:D3:從嵌套數據
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"; }
不工作(j是不確定的),大概是因爲我們在命名的屬性數據點,而不是一個數組元素。如何在不改變數據結構的情況下去做我想要的着色?謝謝!
我通過設置組的樣式而不是圓圈解決了這個問題(爲什麼需要我在堆棧溢出上發佈才能想到這一點?)。我仍然很欣賞較少的work-around-y答案(例如,對於組內的圓圈和路徑會需要不同樣式,或者孩子的屬性是無論如何都不能繼承的情況)。 – 2012-04-08 23:26:01