// Graph sizes let margin = 20, width = 490, height = 490, domainWidth = width - 2 * margin, domainHeight = height - 2 * margin; // Graph render let graph = d3.select('body').append('svg') .attr('width', width) .attr('height', height) .classed('box', true) .append('g') .attr('transform', `translate(${margin}, ${margin})`); // X scale let xScale = d3.scaleLinear().domain([-300, 300]).range([0, domainWidth]); // Y scale let yScale = d3.scaleLinear().domain([-300, 300]).range([domainHeight, 0]); // X axis let xAxis = d3.axisBottom(xScale); graph.append('g') .classed('axis', true) .attr('transform', `translate(0, ${domainHeight / 2})`) .call(xAxis); // Y axis let yAxis = d3.axisLeft(yScale); graph.append('g') .classed('axis', true) .attr('transform', `translate(${domainWidth / 2}, 0)`) .call(yAxis); // Render circles let renderCircles = () => { let circles = graph.selectAll('circle').data(plotData); circles.enter().append('circle') .attr('cx', d => xScale(d.x)) .attr('cy', d => yScale(d.y)) .attr('r', 1.5) .attr('fill', d => d.c); };