Ваша первая точка идет за вашей clip
областью. Например, если вы щелкните правой кнопкой мыши на первом видимом круге и осмотрите элемент, вы увидите, что все 4 элемента круга присутствуют в DOM. Первый элемент круга находится за осью.
Это означает, что вы должны переместить свой сюжет вправо. К сожалению, при кодировании диаграммы вы не добавили элемент g
для основной диаграммы, а затем добавили круги и путь к этому элементу g
. В результате это должно быть сделано в нескольких местах.
Сначала мы корректируем путь клипа следующим образом:
svg
.append("defs")
.append("SVG:clipPath")
.attr("id", "clip")
.append("SVG:rect")
.attr("width", containerWidth)
.attr("height", height)
.attr("x", 40)
.attr("y", 0);
Затем мы корректируем ваши круги
scatter
.selectAll(".foo")
.data(data)
.enter()
.append("circle")
.attr("class", "foo")
.attr("transform", "translate(40,0)")
, а затем линию
scatter
.append("path")
.datum(data)
.attr("class", "line")
.attr("d", line)
.attr("transform", "translate(40,0)");
Вам придется учитывать этот 40
px перевод для других ваших элементов. Хотя мне тяжело разрушать твои svg. Я думаю, что это должно дать вам идею, хотя. Проверьте, совпадает ли ось с временными точками.
Установите флажок с песком кода
Обновите
Чтобы сделать прямоугольники двигаясь с помощью bru sh, вам нужно будет добавить код в вашу функцию brushed
const, чтобы пересчитать x, y, ширину и высоту с использованием обновленных масштабов.
Update2
Пройдя через коды и поля, представленные в комментариях, я смог добавить код для обновления прямоугольников до константы brushed
, как показано ниже, чтобы заставить ренты также перемещаться с помощью кисти:
// update rectangles
scatter
.selectAll(".rect-elements")
.attr("x", d => {
console.log(d);
return xScale(d.startTime) - 12.5;
})
.attr("y", 0)
.attr("width", 24)
.attr("height", height + 5);
Полный рабочий код Песочница.