2013-03-22 65 views
0

我的d3图表在0和1之间的中间值在某些缩放级别0和1实际上是我的数据集的一部分,所以我可以用tickFormat访问器控制他们在yAxis参数中的显示方式。d3删除图表中的十进制值

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

我不想D3表明它创建的中介十进制值。

因为d3是凭空创造出来的,所以我不能简单地做tickFormat(d3.format(", .0f"),因为这只会从我的数据集中的元素中删除小数。

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

回答

3

两件事情,可能会帮助,从https://github.com/mbostock/d3/wiki/SVG-Axes

# axis.ticks([arguments…]) 

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

这暗示蜱使用(虽然它并不总是听你)的数量,但是当你放大可以减少杂波

或:

# axis.tickValues([values]) 

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

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

这台蜱明确,这样你就可以将它们设置为[0, 1],虽然你将有当用户缩小手动修复它们。也许你可以在缩放范围内计算整数,等等。

+0

好吧,做'tickValues([0,1,2,3]);'对于一个测试工作去除小数值,屏幕截图,但你能详细说明我如何动态使用这种方法吗?我想我有一个想法,我将从我的数据中创建一个单独的数组,只需在这个数据集中使用yAxis – CQM 2013-03-22 19:33:29

+0

这取决于您要放大多远。例如,您可以在绘制比例之前将刻度设置为域中的整数值。或者,当你放大到这个尺寸时,你可以调用'ticks(2)'。如果你发布了一些数据,我可以提出一些更具体的建议,因为我不确定你想要为0和1显示什么。 – 2013-03-22 19:38:38

+0

好吧我解决了它,你的建议引导我朝着正确的方向前进。 – CQM 2013-03-22 21:01:33