d3.js:非线性图轴

时间:2014-06-16 15:35:15

标签: javascript d3.js

我正在尝试在轴上添加自定义比例,例如下面的

my custom scale

这个想法是,刻度总是比前一刻度大2倍。

我的理解是这是一个自定义比例。我做了一些研究和研究找不到类似的东西。

所以我想我的问题实际上是两个问题:

  1. 这个尺度在数学世界中是“标准”吗?

  2. 是否可以使用d3.js

  3. 实现此目的

    也欢迎任何相关教程或实例(即jsFiddle)的链接。

    编辑:我现在问a related question on mathematica.stackexchange.com to help me find the solution to this problem&在我尝试了一些事情之后会更新这篇文章。

1 个答案:

答案 0 :(得分:7)

在这种情况下可以使用多线性标度。来自linear scale api documentation

  

虽然线性比例通常只有两个数值   域,您可以为多线性比例指定两个以上的值。   在这种情况下,必须有相同数量的值   输出范围。多线性标度表示多个分段线性   划分连续域和范围的比例。

以下是符合您要求的示例:

// Your custom scale:
var customScale = d3.scale.linear()
        .domain([125,250,500,1000,2000])
        .range([0,50,100,150,200]);

// The axis uses the above scale and the same domain:
var axis = d3.svg.axis()
        .scale(customScale)
        .tickValues([125,250,500,1000,2000]);

知道了滴答数以及域和范围的范围,两个数组的计算都是微不足道的(注意它们的长度必须相等)。