function draw(ctx) {
let path = d3.geoPath(projection, ctx);
circles.forEach(d => {
if (!d.longitude || !d.latitude || !d) return false;
const loc = projection([d.longitude, d.latitude]);
if (!loc) return null;
const [x, y] = loc;
let r = d.frames(tick) * 2;
let fill = d.colorFrames(tick);
ctx.save();
ctx.beginPath(),
path(hexGeoJSON),
(ctx.strokeStyle = "rgba(255, 255, 255, 1 )"),
ctx.stroke();
ctx.restore();
ctx.fillStyle = weightColor(1 - fill);
ctx.lineWidth = 1;
ctx.beginPath();
ctx.arc(x, y, r, 0, 2 * Math.PI);
ctx.fill();
});
}