我正在尝试在轴上添加自定义比例,例如下面的
这个想法是,刻度总是比前一刻度大2倍。
我的理解是这是一个自定义比例。我做了一些研究和研究找不到类似的东西。
所以我想我的问题实际上是两个问题:
这个尺度在数学世界中是“标准”吗?
是否可以使用d3.js
?
也欢迎任何相关教程或实例(即jsFiddle)的链接。
编辑:我现在问a related question on mathematica.stackexchange.com to help me find the solution to this problem&在我尝试了一些事情之后会更新这篇文章。答案 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]);
知道了滴答数以及域和范围的范围,两个数组的计算都是微不足道的(注意它们的长度必须相等)。