【问题标题】:two dimensions brush in d3 v4d3 v4中的二维画笔
【发布时间】:2017-04-12 13:14:08
【问题描述】:

我在将 d3 v3 转换为 d3 v4 时遇到问题

我有这个代码:

  var brush = d3.svg.brush()
      .x(x)
      .y(y)
      .on("brushstart", brushstart)
      .on("brush", brushmove)
      .on("brushend", brushend);

但我不知道如何在 v4 中编写它

我试过了

 var brush = d3.brush()
      .brushX(x)
      .brushY(y)
      .on("brushstart", brushstart)
      .on("brush", brushmove)
      .on("brushend", brushend); 

但它不起作用

注意:我正在使用包 npm: "d3-brush": "^1.0.4",

【问题讨论】:

    标签: javascript node.js d3.js npm


    【解决方案1】:

    这是正确的行为。阅读docs,注意到d3.brush() 本身就可以创建二维画笔:

    #d3.()<>

    创建一个新的二维画笔。

    因此,在创建的画笔上没有方法brush.brushX()brush.brushY()d3.brushX()d3.brushY() 方法将创建一维画笔。

    因此,您的代码最终将如下所示:

    var brush = d3.brush()
      .on("start", brushstart)
      .on("brush", brushmove)
      .on("end", brushend); 
    

    【讨论】:

    • 但是我如何在画笔中定义刻度(x,y:scaleLinear); (我尝试了您的解决方案,我收到了未捕获的错误:未知类型:brushstart)
    • @MrGildarts 画笔的处理已从 v3 更改为 v4。新版本的画笔不再依赖于比例(详见changelog)。至于 unknown type 错误:看看我最近的编辑!事件类型的名称也发生了变化:"brushstart""start""brushend""end"。如果您对这些问题有任何疑问,我建议您发布一个新问题。
    • thnx,但我不确定它是否工作,这次我收到了错误 d3.js:4100 Uncaught TypeError: Cannot read property 'baseVal' of undefined,他有一个 pb with cell.call(刷子);说明
    • @MrGildarts 就像我说的,这些是后续问题,应该作为另一个问题发布。这样做时,请提供minimal reproducible example 以展示您的问题,以便其他人能够提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    相关资源
    最近更新 更多