我有一堆要在图表上绘制的值。样本数据如下:
$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]
答案 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 }}