0

我正在尝试找到一种方法,使用平行坐标为我的数据的不同列分配不同的最大/最小比例。我采用了来自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 个比例的域(从 score.json 中提取,所有数字以列格式)更改为数据类型的唯一性:

  • 百分比(第 1 列和第 6 列)应为 1 - 100,
  • 分数(第 3 列和第 4 列)应为 200 - 两个分数列的最大值,
  • 小时(第 2 列和第 5 列)应该是从 0 到两个小时列的最大值。

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

4

1 回答 1

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
于 2015-02-26T08:56:46.323 回答