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