使用d3(多变量)为平行坐标创建独特的比例

时间:2015-02-26 03:14:30

标签: d3.js parallel-coordinates

我试图找到一种方法,使用平行坐标为我的数据的不同列分配不同的最大/最小比例。我已采用http://bl.ocks.org/jasondavies/1341281的代码,但不希望使用d3.extent。我尝试了不同的方法(for循环,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的任何帮助。

1 个答案:

答案 0 :(得分:0)

您只需从过滤器功能中删除创建比例的代码,然后根据您的规范手动创建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