2012-08-04 65 views
0

喜有以下域array=["Col 1", "2012", "total"]和我创作的规模这样D3 - 使用字符串作为轴蜱

x = d3.scale.ordinal() 
     .domain(array) 
     .rangeRoundBands([0,width], .1); 

而且我所说的轴是这样的:

d3.svg.axis() 
     .scale(x); 

不幸的是这造成不稳定的行为和数据交换重新绘制如下所示:http://jsbin.com/ibewux/9/edit

具有稳定行为的唯一方法是具有域的数值,即array = [0,1,2,3,...]

如何显示此格式的刻度[“Col 1”,“2012”,“total”,...,“any string” ]而不是数字的(即[0,1,2,... N]),并避免数据绘制在重绘时交换(显然是每次不同的随机滴答)?

非常感谢

+0

你是什么意思“蜱交换重绘”?如果您可以链接到演示问题的示例,这将有所帮助。 – mbostock 2012-08-04 20:39:23

+0

http://jsbin.com/ibewux/9/edit – Gian 2012-08-05 05:17:55

回答

2

这已经是该axis蜱为domain valuesordinal scales的情况。如图所示:

设置axis.tickValues标尺的域名在这里是多余的。

+0

感谢您的回答。 jsbin在我的问题链接中:http://jsbin.com/ibewux/9/edit。根据你的建议,蜱不交换,但现在数据确实交换。我无法理解这一点。谢谢。 – Gian 2012-08-05 05:16:47

+0

如果我使用域的数字值一切正常。移动到字符串的数据绘制在一个不同的(并且显然是随机的)滴答。 – Gian 2012-08-05 05:26:02

+0

你需要[使用你的数据连接的关键函数来维持对象的持久性](http://bost.ocks.org/mike/constancy/)。 – mbostock 2012-08-05 16:21:14