D3.js 使用d3(多元)为平行坐标创建唯一比例

D3.js 使用d3(多元)为平行坐标创建唯一比例,d3.js,parallel-coordinates,D3.js,Parallel Coordinates,我试图找到一种方法,使用平行坐标为数据的不同列指定不同的缩放最大/最小值。我采用了来自的代码,但不希望使用d3.extent。我尝试过不同的方法(对于循环、if语句),但d3似乎不喜欢这样 我该如何处理这个问题 d3.json("HW3/scores.json", function(error, scores){ x.domain(dimensions = d3.keys(scores[0]).filter(function(d){ return d != "Country" &a

我试图找到一种方法,使用平行坐标为数据的不同列指定不同的缩放最大/最小值。我采用了来自的代码,但不希望使用d3.extent。我尝试过不同的方法(对于循环、if语句),但d3似乎不喜欢这样

我该如何处理这个问题

 d3.json("HW3/scores.json", function(error, scores){
  x.domain(dimensions = d3.keys(scores[0]).filter(function(d){
    return d != "Country" && (y[d] = d3.scale.linear()
        .domain(d3.extent(scores, function(p) { return +p[d]; }))
        .range([height, 0]));
  }));
我正在尝试将6个量表的域(从scores.json中提取,所有数字均为列格式)更改为数据类型的唯一域:

  • 百分比(第1列和第6列)应介于1到100之间
  • 分数(第3列和第4列)应为200-两个分数的最大值 专栏
  • 小时数(第2列和第5列)应介于0到两个小时数列的最大值之间

请并感谢您为d3 n00b提供的任何帮助。

您只需从过滤器功能中删除创建刻度的代码,然后根据您的规范手动创建y刻度:

x.domain(dimensions = d3.keys(data[0]).filter(function(d) {
  return d != "name";
}));

y['percent 1'] = d3.scale.linear()
    .domain([1, 100])
    .range([height, 0]));
y['hours 1'] = d3.scale.linear()
    .domain([0, d3.max(data, function(p) { return Math.max(+p['hours 1'], +p['hours 2']); }])
    .range([height, 0]));
// etc

谢谢你的来信。我尝试了这个,虽然console没有显示任何错误,但比例不会呈现。我也试着一次做一个,但没有成功。无论如何,谢谢你,我真的很感激。你能提供一个完整的例子来说明你正在尝试做的事情吗?