這對某些人來說可能是微不足道的,但我是D3JS的新手。D3JS振盪氣泡
我想繪製兩個靜態氣泡與不透明度相對於數組的變化。我能夠繪製氣泡,但我不能不斷改變其不透明度。我使用transition
和delay
,不透明度只能更改一次。這裏是我的代碼示例
(function() {
var dropsize = 100;
var gapsize = 20;
var osc = [[1, 1],[0.5, 0.5],[0, 0],[0.5, 0.5],[1, 1],[0.5, 0.5],[0, 0],[0.5, 0.5]];
var radius = dropsize/2;
var h = 100;
var w = (4 * radius + 3 * gapsize);
var svg = d3.select("#chart").append("svg");
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h)
.style("background-color", "teal");
var circles = svg.selectAll("circle")
.data([radius, 3 * radius])
.enter()
.append("circle");
circles.attr("cx", function(d, i) {
return d + (i + 1) * gapsize;
})
.attr("cy", h/2)
.attr("r", function(d, i) {
return radius;
})
.attr("fill", "orange")
.attr("class", "droplet")
.attr("id", function(d, i) {
return "c_" + (i + 1);
});
d3.select("#c_1")
.data(osc)
.transition().delay(function(d, i) {
return i * 1000;
})
.duration(1000)
.attr("opacity", function(d) {
return d[0]
});
})();
見筆Bubble Chart with D3.js using Realtime Data
這工作正常。謝謝@Gerardo Furtado。兩個氣泡應該能夠以不同的不透明度擺動。所以一對分別包含每個泡泡的不透明度 – kthouz
現在它更有意義!請記住,在我的代碼中,數據數組中的兩個值是不透明度的兩個振盪值。 –
是的,明白了。但是,由於未來的某些應用,我選擇使用'setInterval'如下所示: 'tic = new Date(); setInterval(function(){ dt = Math.round((new Date() - tic)/ 50)%osc.length; d3.select(「#c_1」)。transition()。duration(100)。 style(「opacity」,function(){return osc [dt] [0]}); d3.select(「#c_2」)。transition()。duration(100).style(「opacity」 {return osc [dt] [1]}); }) – kthouz