D3.js D3中的线性分段标度

D3.js D3中的线性分段标度,d3.js,D3.js,我想制作一个50到100之间的线性刻度,但如果任何异常值低于50或高于100,将分别强制为50或100的值,这样它就不会脱离图表的可见范围。(然后计划以不同的方式设置这些数据点的样式,以便用户知道这些数据点大于或小于它们的外观。) 我该如何在D3中制作一个线性分段比例来实现这一点?或者说,创建一个由SVG的y属性直接调用的“看门人”函数,手动执行这些强制,然后使用“范围内”值调用一个规则的线性比例,这样“范围外”值就不会首先发送到规则的线性比例,这样做更容易吗?我认为您将这一点复杂化了 我确信

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


我该如何在D3中制作一个线性分段比例来实现这一点?或者说,创建一个由SVG的y属性直接调用的“看门人”函数,手动执行这些强制,然后使用“范围内”值调用一个规则的线性比例,这样“范围外”值就不会首先发送到规则的线性比例,这样做更容易吗?

我认为您将这一点复杂化了

我确信您使用的是
d3.line
,只需将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);
  });
var line=d3.line()
.x(函数(d){返回x(d.x);})
.y(函数(d){
如果(d.y>150)返回y(150);
否则如果(d.y<50)返回y(50);
否则返回y(d.y);
});

我认为你把事情复杂化了

我确信您使用的是
d3.line
,只需将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);
  });
var line=d3.line()
.x(函数(d){返回x(d.x);})
.y(函数(d){
如果(d.y>150)返回y(150);
否则如果(d.y<50)返回y(50);
否则返回y(d.y);
});

事实上,我刚刚意识到这正是我想要的。

事实上,我刚刚意识到这正是我想要的