0
我的目標是取一組點,並將它們(.transition.duration()
)以幾何級數的方式移動幾次。的代碼javascript d3.js - 散點圖上點的多重轉換
實施例:
d3.csv("X.csv", function(csv) {
// initialize circles at random positions
svg.selectAll("circle")
.data(csv)
.enter()
.append("circle")
.attr("cx", function(d) {
return x(80*Math.random());
})
.attr("cy", function(d) {
return y(500*Math.random());
})
.attr("r", function(d) {
return r(Math.sqrt(10*Math.random()));
})
.style("fill", function(d) {
return color(d.A);
})
.style("opacity", 1.0)
.style("stroke-opacity", 1)
.style("stroke-width", 3)
.style("stroke", function(d) {
return stroke(d.B)
});
// Move #1: moving the marks to their position
svg.selectAll("circle")
.transition().duration(2000)
.attr("cx",function(d) {
return x(+d.C);
})
.attr("cy",function(d) {
return y(+d.D);
})
.attr("r",function(d) {
return r(Math.sqrt(+d.E));
})
.style("opacity", 0.8);
//Move #2: move again to highlight
svg.selectAll("circle")
.transition().duration(2000)
.style("opacity", function(d) {
if (d["A"] == "male") {
return 0.1;
} else if (d["A"] == "female") {
return 0.8;
}
});
}
問題:運行按原樣移動#1被跳過。
失敗嘗試次數:如果我註釋掉移動#2部分,則移動#1起作用。如果我註釋移動#1部分,則移動#2工作。
觀念認爲:我用Google搜索.delay
,setTimeout()
和其他選項與.exit()
和進一步的數據綁定步驟,但我認爲應該有更簡單的東西存在。我也嘗試過關注this SO post,但很難按照第一個答案的「常規更新模式」示例。
問題:我該如何獲得移動#1和移動#2繼續工作(可能進一步移動#3,#4等)?
這正是我一直在尋找,並能夠實現對我的問題的想法,得到所需的解決方案。感謝您的時間和精力!希望這有助於他人在未來。 – ximiki