我感觉这可能只是我对对数刻度的工作原理误解,但我似乎无法让D3的对数刻度基数正常工作。
在这个fiddle中,我尝试创建三个刻度尺,使用相同的base10刻度值,分别采用base10对数刻度、base4对数刻度和base2对数刻度。根据我对对数刻度的门外汉理解,base10对数刻度看起来正确——十的幂在轴上等距分布。但是,base4和base2刻度是相同的——在我看来,标签应该在这两个刻度上向右压缩。出了什么问题?
fiddle代码:
ticks = [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000]
elems = { ten: 10, four: 4, two: 2 }
for selector, base of elems
dom = d3.select('.scale.' + selector)
scale = (new d3.scale.log()).base(base).domain([ 0.5, 10000000 ]).range([ 0, 500 ])
dom.selectAll('div')
.data(ticks)
.enter().append('div')
.text((x) -> x)
.style('left', (x) -> scale(x) + 'px')