我試圖創建一個類似於此示例中的東西:Wealth and Health of Nations:躍遷D3 - 複製泡沫,而不是氣泡轉變
我的數據來自一個JSON文件,就像例子,但當我添加轉換時,我得到重複的氣泡。而不是泡泡從A點過渡到B點,我得到了2個泡泡(一個用於A點,另一個用於B點)。一般而言,過渡不能區分相同泡泡的2個數據點或2個獨立泡泡。
看看這個例子,我錯過了插值和平分函數。我一直無法掌握他們的工作方式,以及我做錯了什麼。這是什麼導致我的圖形中的問題?
另外,有人可以給我一個關於平分線程和插值如何在d3中工作的例子嗎?
代碼:
g = d3.select("#animation")
.append("svg")
.attr("width", width)
.attr("height", height);
x_extent = [0, 100];
x_scale = d3.scale.linear().domain(x_extent).range([margin + 20, width - 30]);
y_extent = [0, 60];
y_scale = d3.scale.linear().domain(y_extent).range([height - margin, margin]);
r_scale = d3.scale.linear().domain([0, d3.max(jsondata, function (d) { return d.MSVMMboe; })]).range([2, 30]);
g.selectAll("circle").data(jsondata, function (d) { return d.EffectiveDate; }).enter().append("circle")
.attr("cx", function (d) { return x_scale(d.PercentageComplete * 100) })
.attr("cy", function (d) { return y_scale(d.GPoS * 100) })
.attr("r", function (d) { return r_scale(d.MSVMMboe) })
.attr("stroke", "blue")
.attr("stroke-width", 1)
.attr("opacity", 0.6)
.attr("fill", "red");
//add transition
g.selectAll("circle").data(jsondata, function (d) { return d.EffectiveDate; })
.transition()
.duration(1000);
聽起來就像你在過渡期間添加了新的元素,也就是說你有類似'.data(...)。append(...)。transition(...)'的東西。刪除'.append(...)'或其他任何東西。沒有向我們展示實際的代碼,不可能告訴你究竟在哪裏出錯了。 –
我已添加代碼,謝謝! – user1783490