Javascript 如何正确使用D3上自定义轴的数组标签名称?

Javascript 如何正确使用D3上自定义轴的数组标签名称?,javascript,arrays,d3.js,axis,labels,Javascript,Arrays,D3.js,Axis,Labels,我正在尝试为D3上的x轴制作自定义标签。我当前的解决方案随机抛出数组元素,但我希望它是以特定的顺序。如何使用tickformat正确完成此操作?我的当前代码粘贴在下面: var formatAxis = function(d) { return arr[d % arr.length]; } xAxis = d3.svg.axis() .scale(xScale) .

我正在尝试为D3上的x轴制作自定义标签。我当前的解决方案随机抛出数组元素,但我希望它是以特定的顺序。如何使用tickformat正确完成此操作?我的当前代码粘贴在下面:

        var formatAxis = function(d) {
           return arr[d % arr.length];      
        }

        xAxis = d3.svg.axis()
            .scale(xScale)
            .orient("bottom")
            .tickValues(createTickValuesArray(arr.length))
            .tickFormat(formatAxis);

非常感谢您的帮助。

如果您希望按与数组中相同的顺序返回记号标签,可以显式使用索引:

var formatAxis = function(d, i) {
       return arr[i];      
    }

这是使用
.tickFormat()
无法做到的,顺序取决于您使用的比例。我猜你用的是序数刻度?不,我用的是线性刻度。为什么刻度决定了刻度的书写顺序?我假设它只是一个接一个地获取数组的内容?是的,但是比例决定了它们的去向——也就是说,如果第一个元素是6,第二个元素是5,那么5仍然会出现在轴上的6之前。不知道你现在所说的具体顺序是什么意思。你能举个例子吗?当然可以。从数据库中获取数据点和数组的数据除外。此数组具有每个数据点的标签名称。当我使用console.log打印出这个数组时,这就是输出:[“t(15;17)”,“inv(16)/t(16;16)”,“t(8;21)”,“t(11q23)/MLL”,“复杂ab.核型”,“HSC”,“MPP”,“CMP”,“GMP”,“MEP”,“早晚”,“MY”,“MM”,“BC”,“PMN”,“Mono”]。此数组与我在
formatAxis
函数中使用的数组相同。我需要这些标签按照它们在数组中的顺序从左到右显示在轴上,因为这对图形非常重要。您的
formatAxis()
函数看起来像什么?