d3.js – 如何告诉d3不要在刻度中重复值?

我制作了直方图/条形图.我将频率数据作为整数读入并设置我的y轴,如下所示:

var yScale = d3.scale.linear().range([300, 0]).domain([0, 2]);
var yAxis = d3.svg.axis().scale(yScale).orient(‘left’)
        .tickFormat(d3.format(,.0f));

不幸的是,y轴重复几次每个频率,如下所示:

如何告诉d3停止在y轴上重复y值?我不想使用.ticks(someNumber),因为我想保持tick的数量本身是灵活的.

最佳答案 在轴上使用.ticks(n)而不是tickFormat(). ticks()函数定义d3应该瞄准多少个刻度 – 它并不总是那个数字.它自己选择最理智的分裂单位. n默认为10,但您可以根据域进行更改,因此对于示例数据,您可以将其设置为3(0,1,2).理论上你也可以在数据输入上使用它.

图表的范围/高度是否动态取决于数据?在大多数情况下,你不希望它,因为它是不可预测的.如果您明确设置图表的高度,您还是希望将刻度和标签的数量限制为最适合该尺寸的数字.

您可能还想查看https://github.com/mbostock/d3/wiki/Quantitative-Scales#linear_nice.这允许您为刻度定义规则.

点赞