我想制作一个50到100之间线性的刻度,但如果任何异常值低于50或高于100,则分别强制转换为50或100的值,这样它就不会脱落我的图表的可见范围。 (然后计划以不同的方式设置这些数据点的样式,以便用户知道它们比它们看起来的要多或少。)
如何在D3中制作线性分段刻度呢?或者更简单的做法是直接通过SVG的y属性调用“看门人”函数,手动执行那些强制,然后调用具有“范围内”值的规则线性标度,以便“超出范围” “首先不会将值发送到常规线性标度?
答案 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)
完全符合我的要求。