Javascript d3.js,对数刻度:添加更多刻度

Javascript d3.js,对数刻度:添加更多刻度,javascript,d3.js,Javascript,D3.js,这是我的秤: var y = d3.scale.log() .domain( [ 13, 21 ] ) .range( [ 300, 0 ] ); 我的轴心: var yaxis = d3.svg.axis() .scale( y ) .orient( 'right' ) .tickSize( -width ) .tickFormat( function ( v ) { if ( v > 999 ) return numer

这是我的秤:

var y = d3.scale.log()
    .domain( [ 13, 21 ] )
    .range( [ 300, 0 ] );
我的轴心:

var yaxis = d3.svg.axis()
    .scale( y )
    .orient( 'right' )
    .tickSize( -width )
    .tickFormat( function ( v ) {
        if ( v > 999 ) return numeral( v ).format( '0.0a' );
        else return v;
    } )
    .ticks( 10 );
我希望我能有一些滴答声,但我只有一滴答声

当我向比例定义中添加nice时,我得到了我想要的刻度;但我的分数从10开始到100;这一点都不好


有什么想法吗?

你可以使用.tickValues来明确指定tick值。好吧,我写了13和21,但这不是固定值,可能是47到48或1到1百万分之一。如果你不想使用,这是你唯一的选择。很好。当你更改y比例时,你需要将其重新应用到轴上,并将轴重新应用到图表上,因此,您可以根据新的y比例域动态更新.tick值。