d3 v5轴过渡

时间:2018-05-09 10:14:12

标签: javascript typescript d3.js

我在d3 v5中有一个图表,它一次显示数据集的一部分,并在按下按钮时更新它。图形内容(线条,多边形,圆形,图像和文本)转换得很好,但我无法弄清楚如何在d3 v5中过渡轴。

我试过按照本教程: https://bl.ocks.org/HarryStevens/678935d06d4601c25cb141bacd4068ce

可悲的是,它使用的是d3 v4。我尝试将该语法用于我的项目,但似乎不可能在d3 v5中使用调用转换。

问题在于这一部分:

svg.select(".x")
  .transition()
    .call(x_axis);

我收到此错误:

error TS2345: Argument of type 'Axis<number | { valueOf(): number; }>' is not assignable to parameter of type '(transition: Transition<BaseType, { x: Date; y: number; doubt: number; }[][], HTMLElement, any>, ...'.
Types of parameters 'context' and 'transition' are incompatible.

它有点过了,基本上它表示axisBottom函数应该应用于选择而不是转换。

我环顾四周,但我找到的所有内容都使用d3 v4或者没有提到轴转换。那么:是否有可能在d3 v5中转换轴,如果是这样的话?

1 个答案:

答案 0 :(得分:3)

感谢@Mark,我意识到我从错误的角度看问题。它并非来自d3,而是来自Typescript。 axisBottom变量是一个函数,而Typescript要求它在用作回调时具有上下文。绑定这解决了这个问题,如:

svg.select(".x")
  .transition()
    .call(x_axis.bind(this));