sustainability = {
worldMap.select("#piecharts").remove()
let adjSize = 20;
const simulation = d3
.forceSimulation(data)
.force(
"x",
d3.forceX((d) => mapProjection([parseFloat(d[baseX]), parseFloat(d[baseY])])[0])
)
.force(
"y",
d3.forceY((d) => mapProjection([parseFloat(d[baseX]), parseFloat(d[baseY])])[1])
)
.force(
"collide",
d3.forceCollide(boxSize+1).strength(repulsionFactor)
)
const nodeG = worldMap.append("g")
.attr("id", "piecharts")
.attr("stroke", "white")
.attr("stroke-width", 0.5)
.selectAll("g")
.data(data)
.join("g")
.call(drag(simulation));
let colors = index === 'gdp' ? gdpColors: popnColors;
nodeG.append("g")
.each(function(node) {
let linePoints = processDataEq(node);
console.log(linePoints[0]['val'] > linePoints[1]['val']);
d3.select(this).append('path')
.datum(linePoints)
.attr("stroke", d => d[2] > 0 ? 'green' : 'red')
.attr("stroke-width", stroke/1.4)
.attr("stroke-opacity", 1)
.attr("stroke-linejoin", "round")
.attr("stroke-linecap", "round")
.attr("d", lineP);
})
simulation.on("tick", () => {
nodeG.attr("transform", d => `translate(${d.x}, ${d.y})`)
});
invalidation.then(() => simulation.stop());
return worldMap.node();
}