Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
D3.js 从tsv数据按顺序比例设置域_D3.js - Fatal编程技术网

D3.js 从tsv数据按顺序比例设置域

D3.js 从tsv数据按顺序比例设置域,d3.js,D3.js,我正在使用d3js并从tsv文件加载一些数据。对于数字数据,我设置的比例如下: var x=d3.scale.linear() .domain([d3.min(data,function(d){return + d.GERD;}),d3.max(data,function(d){return +d.GERD;})]) ... var colorRamp=d3.scale.category10() .domain(["Africa","A

我正在使用d3js并从tsv文件加载一些数据。对于数字数据,我设置的比例如下:

var x=d3.scale.linear()
      .domain([d3.min(data,function(d){return + d.GERD;}),d3.max(data,function(d){return +d.GERD;})])
      ...
var colorRamp=d3.scale.category10()
                 .domain(["Africa","Asia"....]);
在实际数据中查找最小值和最大值。这样我就不必猜测我的量表,如果数据改变,量表也会改变

对于非数值,我也需要同样的东西

在这个相同的数据中,有一个“大陆”分组,我想对其进行颜色编码。所以我用了10个有序的等级,像这样:

var x=d3.scale.linear()
      .domain([d3.min(data,function(d){return + d.GERD;}),d3.max(data,function(d){return +d.GERD;})])
      ...
var colorRamp=d3.scale.category10()
                 .domain(["Africa","Asia"....]);
我在web上找到的所有示例都显示了使用特定值设置顺序标度的域,而不是如何从数据中提取该信息

我胡思乱想,想出了一个有效的办法:

var colorRamp=d3.scale.category10()
        .domain(data.map(function (d) { return d.continent; }))

我的问题是,这是最好的方法吗?还有更像d3的习惯用法吗?我是否遗漏了一些非常明显的内容?

一般来说,如果要定义序数比例,请根据现有数据生成一个数组,就像您建议的那样:

var colorRamp = d3.scale.category10()
    .domain(data.map(function (d) { return d.continent; }));
在您的情况下,如果您不确定数据的顺序,对域进行排序也可能很有价值:

var colorRamp = d3.scale.category10()
    .domain(data.map(function (d) { return d.continent; }).sort(d3.ascending));
请注意,从技术上讲,您不需要将域设置为有序规模;如果显式设置数据范围,则会从传递给缩放函数[1]的每个唯一值推断域


[1]

这就是方法。谢谢。我在传递数据时注意到它是被分配的。但是我试图创建一个图例,发现如果我把代码放在图表之前,它就不起作用了。我想有时候我想显式地分配这个域——所以在我的技巧包中有这样的东西是很好的。