繁体   English   中英

D3 function 用于类似量规的刻度,以产生:[-2, -1, 0, 0, 1, 2]

[英]D3 function for gauge-like scale to produce: [-2, -1, 0, 0, 1, 2]

我使用哪种 d3 scale function 或方法来转换数据

input = 13 // count of items to be had in an array

进入一个数组,其中:

  • 中间值为0,
  • 左边的值是递减的,
  • 右边的值是递增的

output = [-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6] // 13 items

我敢打赌,有一个优雅的解决方案,但我自己不会说数据科学语言来找到它。

项目数可以是偶数,则中间是2倍0:

input = 6 // count of items to be had in an array

output = [-2, -1, 0, 0, 1, 2] // 6 items

您不需要 D3 比例:D3 比例将输入值(域)映射到 output 值(范围)。

正如您所解释的,您只想按照给定规则将数字N转换为N个元素的数组。 也就是说,您只需要一个 function 来生成数组,这可以使用d3.range完成(或者甚至使用普通 JS,不需要 D3)。

例如:

 function gauge(input) { return d3.range(input--).map(d => ~~(d - input / 2)); }; console.log(gauge(13)) console.log(gauge(6))
 <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>

这里是纯 JS 版本,没有 D3:

 function gauge(input) { return Array.from(Array(input--).keys()).map(d => ~~(d - input / 2)); }; console.log(gauge(13)) console.log(gauge(6))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM