[-1,1]范围内的比例值具有D3&#s缩放功能

时间:2016-02-16 16:32:12

标签: javascript d3.js

我有一堆要在图表上绘制的值。样本数据如下:

$urlRouterProvider.otherwise('/home');

正如您所看到的,大多数数据都是(大约)零,但是某些值具有更强的偏差(异常值)。我想绘制数据,以便异常值可以与其他数据区别开来。

为此,我已经实例化了一个从-1到1的域的缩放:

[0, 0, -0.015, 0, 0.12, -0.654, 0, 0, 0.0029, 0.879, -1.54, 0, 0, ...]

所以当我通过时, var data = [...]; var yScale = d3.scale.linear().domain([-1, 1]).range(d3.extent(data)); var dataScaled = data.map(function (d) { return yScale.invert(+d); }); ,缩放后的数据将[-0.9, 0, 0.9]与预期一致。

此方法存在的问题是,数据[-1, 0, 1]将缩放为约[0, -0.9]。我希望它缩放到[-0.95, 0.95]。在极坐标系统中进行缩放,中心在0和半径为1.这是否可以使用d3并且具有可接受的开销?

一个快速而肮脏的解决方案可能是有两个量表,一个用于阳性,一个用于阴性:

[0, -1]

1 个答案:

答案 0 :(得分:1)

我认为您的解决方案是最好的。

当您使用d3.scale.linear().domain([-1, 1]).range(d3.extent(data));数据进行var data = [0, -.9];时,基本上是告诉d3将最大值设为1,将最小值设为-1。

d3线性比例的目的只是将范围映射到,所以即使数据如var data = [0, .01],您也会回来{{1 }}