0

我的 d3 图表在某些缩放级别下放入 0 和 1 之间的中间值 0 和 1 实际上是我的数据集的一部分,因此我可以使用访问器控制它们在我的 yAxis 参数中的外观tickFormat

我不希望 d3 显示它创建的中间十进制值。

由于 d3 是凭空创建它们,我不能简单地这样做tickFormat(d3.format(", .0f"),因为这只会从我的数据集中的元素中删除小数。

如果它们是十进制值,如何删除 d3 生成的假值?在更远的缩放级别,我确实希望看到中间值。

4

1 回答 1

3

来自https://github.com/mbostock/d3/wiki/SVG-Axes的两件事可能会有所帮助:

# axis.ticks([arguments…])

获取或设置传递给底层刻度刻度函数的参数。指定的参数被传递给 scale.ticks 以计算刻度值。对于定量刻度,请指定所需的滴答计数,例如axis.ticks(20).

这暗示了要使用的刻度数(尽管它并不总是听你的),但可以在你放大时减少混乱。

或者:

# axis.tickValues([values])

获取或设置显式刻度值。如果指定了数组,则这些值用于生成刻度,而不是使用刻度的刻度生成器。如果values为 null,则清除任何先前设置的显式刻度值,恢复为刻度的刻度生成器。如果未指定值,则返回当前设置的刻度值(如果有)例如,要生成特定值的刻度:

var xAxis = d3.svg.axis()
    .scale(x)
    .tickValues([1, 2, 3, 5, 8, 13, 21]);

这会显式设置刻度,因此您可以将它们设置为[0, 1],尽管当用户缩小时您必须手动修复它们。也许您可以只计算缩放范围内的整数等。

于 2013-03-22T19:25:27.400 回答