d3从图表中删除小数值

时间:2013-03-22 19:15:04

标签: javascript d3.js

我的d3图表在某些缩放级别0和1之间放置介于0和1之间的中间值,实际上我的数据集是我的数据集的一部分,因此我可以使用tickFormat访问器控制它们在yAxis参数中的显示方式。 / p>

http://i46.tinypic.com/zthcnm.png

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

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

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

1 个答案:

答案 0 :(得分:3)

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

# axis.ticks([arguments…])

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

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

或:

# axis.tickValues([values])

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

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

这会明确设置刻度,因此您可以将它们设置为[0, 1],但您必须在用户缩小时手动修复它们。也许你可以在缩放范围内计算整数等