Есть две ошибки: когда вы рисуете круги, вы предполагаете, что data
объект является массивом с элементами, которые содержат свойства «диаметр» и «расстояние»:
svg.append('g')
.selectAll("dot")
.data(data)
.enter()
.append("circle")
.attr("cx", function (d) { return x(d.distance); } )
.attr("cy", function (d) { return y(d.diamter); } )
, но на самом деле вы используете исходный data
объект со сложной структурой.
Итак, вы должны добавить что-то вроде этого:
data2 = diameter.map(function(e,i){return {'diameter': e, 'distance':distance[i]}})
и изменить рендеринг вашего круга на data2:
svg.append('g')
.selectAll("dot")
.data(data2)
.enter()
.append("circle")
.attr("cx", function (d) { return x(d.distance); } )
.attr("cy", function (d) { return y(d.diameter); } )
.attr("r", 3.5)
.style("fill", "#69b3a2")
И вторая ошибка - «диаметр» вместо «диаметр» в .attr("cy", function (d) { return y(d.diamter); }