var s = d3.select('#vis') //selection var t = 0 // increment var w = 960 var h = 400 var reps = 1500 // number of repetitions var colorRainbow = d3.scaleSequential() .domain([0, reps]) .interpolator(d3.interpolateRainbow) function update(_t) { s.append('circle') .attrs({ cx: x(_t), cy: y(_t) + (h/2), r: d3.randomUniform(2, 7)(), fill: colorRainbow(_t) }) } // parametric equations function x(n) { return Math.sin(n / 10) * 100 + Math.sin(n / 15) * 100 } function y(n) { return Math.cos(n / 10) * 100 } // update d3.interval(function() { if (t < reps) { t++ update(t) } }, d3.randomUniform(8, 24)());