javascript - 我的 d3 折线图中的画笔功能未按预期工作

标签 javascript reactjs d3.js svg

我在 d3 折线图中实现的画笔和缩放功能未按预期工作,

我点击了此链接 - https://bl.ocks.org/EfratVil/92f894ac0ba265192411e73f633a3e2f ,

我面临的问题是 -

图表没有显示所有值,我有 4 个数据,但它只显示 3 个数据 onClick 点我显示的矩形不随画笔功能移动 小事,但图表总是开箱即用

我的代码沙箱 - https://codesandbox.io/s/proud-firefly-xy1py

有人可以指出我做错了什么吗?谢谢。

[1]: /image/lamzH.png

请告诉我我做错了什么,谢谢。

最佳答案

您的第一个点位于您的剪辑区域后面。例如,如果右键单击第一个可见的圆圈并检查元素,您将看到 dom 中存在所有 4 个圆圈元素。第一个圆形元素位于轴后面。

这意味着您必须将绘图向右移动。不幸的是,您对图表进行编码的方式没有为主图表附加一个 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。我想这应该能给你一个想法。检查轴是否也与时间点匹配。

检查code sand box

更新

要使矩形随画笔移动,您必须向 brushed const 函数添加代码,以使用更新的比例重新计算 x、y、宽度和高度。

更新2

浏览完评论中提供的codesandbox后,我能够添加代码以将矩形更新为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);

Full working Code Sandbox.

关于javascript - 我的 d3 折线图中的画笔功能未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60733821/

相关文章:

javascript - 如何使用 {flip : false}? 选择退出 'rtl'

javascript - 如何完全停止 d3.zoom?

javascript - 使用map返回空数组而不是[0]零

javascript - jquery 的 val() 有时不适用于 IE 上的 select 元素

javascript - 如何获取包含数据属性的innerHTML

ios - React Native (0.63) 警报在 IOS 中自动消失

javascript - 如何在javascript中获取文件对象的所有属性?

javascript - 标题属性不适用于 Safari 上的 SVG Rect

javascript - 更改瀑布图示例上的 xaxis 文本方向

c# - 如何判断客户端机器是否支持PDF文件格式