Javascript 使用D3的静态xAxis顺序

Javascript 使用D3的静态xAxis顺序,javascript,d3.js,nvd3.js,Javascript,D3.js,Nvd3.js,我正在尝试在muli条形图上设置x轴的起点和终点。我可以根据对象中的日期,按照收到的顺序绘制图表。如何对x轴进行重新排序,以便从特定月份开始,如五月 我输入d3的月份是两位数(01、02、03等) NVD3多条形图的x轴使用d3顺序刻度。有序标度的域(数据值)定义为类别数组;这些类别由轴按它们在阵列中的显示顺序使用 正如您所发现的,默认行为——如果没有显式设置域——是按照每个新类别在数据中出现的顺序添加它们。这就是NVD3的用途 要对x轴类别进行排序,有两种选择: 在将数据传递到图表之前对其进行

我正在尝试在muli条形图上设置x轴的起点和终点。我可以根据对象中的日期,按照收到的顺序绘制图表。如何对x轴进行重新排序,以便从特定月份开始,如五月

我输入d3的月份是两位数(01、02、03等)


NVD3多条形图的x轴使用d3顺序刻度。有序标度的域(数据值)定义为类别数组;这些类别由轴按它们在阵列中的显示顺序使用

正如您所发现的,默认行为——如果没有显式设置域——是按照每个新类别在数据中出现的顺序添加它们。这就是NVD3的用途

要对x轴类别进行排序,有两种选择:

  • 在将数据传递到图表之前对其进行排序

  • 在使用NVD3图表对象的
    .xDomain(数组)
    方法运行图表之前,显式设置x域

  • 传递给
    xDomain
    方法的数组应该按照所需的顺序具有所需的所有x值。如果您确切地知道类别是什么,您可以在程序中对其进行硬编码。一种更灵活的方法是从数据中生成它,方法是使用从每个数据对象中提取相关变量,然后使用以正确的顺序获取它们


    (您可以在排序之前删除重复项----但这不是必需的。)

    您能提供一个您一直在编写的代码吗?我用代码更新了我的问题。图表根据键/值的排序方式绘制。我希望把它们整理好,从五月开始,而不是随机的。谢谢。我最终在服务器端修复了日期,现在它们是按时间顺序排列的,但我需要让数组从May开始。我给你打一针。谢谢在我的例子中,我在将日期传递到图表之前对日期进行了排序。虽然不是最好的,但它很有效。再次感谢。
        var chart = nv.models.multiBarChart();
    
        chart.xAxis
            .tickFormat(d3.format(',f'));
    
        chart.yAxis
            .tickFormat(d3.format(',.1f'));
    
        d3.select('#chart svg')
            .datum(data())
            .transition().duration(500)
            .call(chart)
            ;
    
        nv.utils.windowResize(chart.update);
    
        return chart;
    });