d3.js + nvd3平行坐标可拖动轴

时间:2015-04-27 13:08:10

标签: javascript d3.js angularjs-directive nvd3.js

所以我正在玩d3.js和nvd3。我试图使用nvd3和d3制作一个平行坐标图,可以拖动/重新排序不同的轴。我只能使用d3制作可拖动的轴,但是,如果可能的话,我想使用nvd3来做到这一点,但据我所知,没有办法做到这一点。我正在使用angularjs指令来实现这一点。此代码创建图表:

// Extract the dimensions and crate a scale for each dimension.
var data = [];
var tmpArray = [];

for (var i = 0; i < newVal.AnalysisIn.length; i++) {
    data.push(newVal.AnalysisIn[i]);
    tmpArray.push(newVal.AnalysisOut[i]);
}

for (var j = 0; j < data.length; j++) {
    for (var k = 0; k < tmpArray.length; k++) {
        angular.extend(data[j], tmpArray[j]);
    }
}

// Set dimensions of each axis
dimensions = d3.keys(data[0]).filter(function (d) {
    return d !== 'name' && (y[d] = d3.scale.linear()
        .domain(d3.extent(data, function (p) {
        return +p[d];
    }))
        .range([height, 0]));
});

console.log(dimensions);

nv.addGraph(function () {
    var chart = nv.models.parallelCoordinates()
        .margin(margin)
        .height(height)
        .width(width)
        .dimensions(dimensions);

    svg.datum(data)
        .call(chart);

    return chart;
});

除非我无法对轴进行拖动/重新排序,否则我可以找到一种方法来执行此操作,如下例所示:http://bl.ocks.org/jasondavies/1341281

任何人都知道如何做到这一点?非常感谢任何帮助!

// Rhanox

1 个答案:

答案 0 :(得分:0)

我最终使用了Syntagmatic(https://syntagmatic.github.io/parallel-coordinates/)的parcoords角度库。这就像一个魅力,比nvd3平行坐标图(在我看来)更容易使用。