d3.js重新排列绘图的数据列

时间:2017-05-04 17:09:34

标签: javascript d3.js parallel-coordinates

我已经尝试了一段时间,但我不确定我需要搜索哪个关键字。无论如何,我有兴趣改变d3中数据的加载方式,这样我就可以重新排列图中的列。在R术语中,我正在寻找的是相当于改变因子水平,以便能够重新排列条形图中的列。

例如,在下面一个块的链接中,我想手动设置平行坐标的顺序。目前,它显示经济,气缸,从左到右。我想做一些像年,体重,位移等的事情。

https://bl.ocks.org/jasondavies/1341281

2 个答案:

答案 0 :(得分:3)

列的顺序由此代码段中的d3.keys(cars[0])确定:

x.domain(dimensions = d3.keys(cars[0]).filter(function(d) {
    return d != "name" && (y[d] = d3.scale.linear()
        .domain(d3.extent(cars, function(p) {
            return +p[d];
        }))
        .range([height, 0]));
}));

例如,这里是相同的代码,但使用...

d3.keys(cars[0]).sort()

...按字母顺序对数组进行排序:https://bl.ocks.org/anonymous/9fb7329fed0e2ea539bab5bc5a47a16c

因此,如果您想要特定订单,您只需传递所需的数组:

x.domain(dimensions = ["year", , "weight (lb)", "name", "displacement (cc)", "economy (mpg)", "cylinders", "power (hp)", "0-60 mph (s)"].filter(function(d) {
    return d != "name" && (y[d] = d3.scale.linear()
        .domain(d3.extent(cars, function(p) {
            return +p[d];
        }))
        .range([height, 0]));
}));

以下是块:https://bl.ocks.org/anonymous/4f1798a5e658df7986f70effa030497c

答案 1 :(得分:0)

要完成此操作,您可以使用csv文件(即cars.csv)并在Excel电子表格中进行编辑。您可以根据需要转置列并将其复制回d3js函数。请看下面的示例(使用Excel完成):

name,year,weight (lb),displacement (cc),economy (mpg),cylinders,power (hp),0-60 mph (s)
AMC大使Brougham,73,3821,360,13,8,175,11 AMC大使DPL,70,3850,390,15,8,190,8.5 AMC大使SST,72,3672,304,17,8,150,11.5 AMC Concord DL 6,79,3265,232,20.2,6,90,18.2

等......我不想让它延伸太多......