D3中的线性分段刻度

时间:2017-06-22 16:54:37

标签: d3.js

我想制作一个50到100之间线性的刻度,但如果任何异常值低于50或高于100,则分别强制转换为50或100的值,这样它就不会脱落我的图表的可见范围。 (然后计划以不同的方式设置这些数据点的样式,以便用户知道它们比它们看起来的要多或少。)

enter image description here

如何在D3中制作线性分段刻度呢?或者更简单的做法是直接通过SVG的y属性调用“看门人”函数,手动执行那些强制,然后调用具有“范围内”值的规则线性标度,以便“超出范围” “首先不会将值发送到常规线性标度?

2 个答案:

答案 0 :(得分:2)

我认为你过于复杂了。

我确定您使用的是d3.line function,只需限制y访问者中的值:

var line = d3.line()
  .x(function(d) { return x(d.x); })
  .y(function(d) { 
    if (d.y > 150) return y(150);
    else if (d.y < 50) return y(50);
    else return y(d.y);
  });

答案 1 :(得分:2)

实际上,我刚刚意识到linear.clamp(true)完全符合我的要求。