d3.js 重新排列绘图的数据列
d3.js Rearranging columns of data for plot
我已经尝试了一段时间,但我不确定我需要搜索什么关键字。无论如何,我有兴趣更改 d3 中的数据加载方式,以便我可以重新排列图中的列。用 R 术语来说,我正在寻找的是相当于改变因子水平,以便能够重新排列条形图中的列。
比如在link下面的一个block中,我想手动设置平行坐标的顺序。目前,它从左到右显示经济、圆柱体到年份。我想做一些年,重量,排量等
为此,您可以获取 csv 文件(即 cars.csv)并在 excel 电子表格中进行编辑。在那里,您可以根据需要转置该列,然后复制回您的 d3js 函数。请看下面的示例(使用 excel 完成):
name,year,weight (lb),displacement (cc),economy (mpg),cylinders,power (hp),0-60 mph (s)
AMC 布鲁厄姆大使,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
等等...我不想让它延长太多...
列的顺序由以下代码段中的 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
我已经尝试了一段时间,但我不确定我需要搜索什么关键字。无论如何,我有兴趣更改 d3 中的数据加载方式,以便我可以重新排列图中的列。用 R 术语来说,我正在寻找的是相当于改变因子水平,以便能够重新排列条形图中的列。
比如在link下面的一个block中,我想手动设置平行坐标的顺序。目前,它从左到右显示经济、圆柱体到年份。我想做一些年,重量,排量等
为此,您可以获取 csv 文件(即 cars.csv)并在 excel 电子表格中进行编辑。在那里,您可以根据需要转置该列,然后复制回您的 d3js 函数。请看下面的示例(使用 excel 完成):
name,year,weight (lb),displacement (cc),economy (mpg),cylinders,power (hp),0-60 mph (s)
AMC 布鲁厄姆大使,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
等等...我不想让它延长太多...
列的顺序由以下代码段中的 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