{
const svg = d3.create("svg")
.attr("width",width)
.attr("height",height*3);
const spacing = 27
const max_por_fila = 10
const radius = 10
const margin = 15
const distancia_max = 4
const color_scale = d3.scaleLinear()
.domain([0, distancia_max])
.range([0,1])
const interpolador = d3.interpolateLab("#FF006E","#8338EC")
var circulos = svg.selectAll("circle")
.data(grilla_circulos)
.enter()
.append("circle");
circulos .attr('cx', (d,i) => margin + spacing * (i % max_por_fila))
.attr('cy', (d,i) => margin + Math.floor(i / max_por_fila) * spacing)
.attr('r', radius)
.style('fill', '#8338EC')
.on('mouseover', function (d, i, arr) {
const clickX = i % max_por_fila
const clickY = Math.floor(i / max_por_fila)
arr.forEach((ciculo,index) => {
const currX = index % max_por_fila
const currY = Math.floor(index / max_por_fila)
const dist = Math.sqrt((clickX-currX)**2 + (clickY-currY)**2)
if(dist < distancia_max)
d3.select(ciculo).style('fill', function(d) { return interpolador(color_scale(dist))} )
})
})
.on('mouseout', function (d, i, arr) {
arr.forEach((ciculo,index) => {
d3.select(ciculo).style('fill', "#8338EC" )
})
})
return svg.node();
}