Javascript D3.js D3.max未定义
这是我的第一个问题,我对奇妙的d3.js一无所知。 我尝试用一个包含12个对象和大量属性的geojson文件制作一个choropleth映射 我想通过d3.min和d3.max计算colorscale(quantize)的域,但一定是出了问题。min和max的值仍然没有定义(如果我相信我的webinspektor)。 域标记中的数字都可以正常工作 我希望有人能帮助我。谢谢你的回答 这是我的密码:Javascript D3.js D3.max未定义,javascript,d3.js,Javascript,D3.js,这是我的第一个问题,我对奇妙的d3.js一无所知。 我尝试用一个包含12个对象和大量属性的geojson文件制作一个choropleth映射 我想通过d3.min和d3.max计算colorscale(quantize)的域,但一定是出了问题。min和max的值仍然没有定义(如果我相信我的webinspektor)。 域标记中的数字都可以正常工作 我希望有人能帮助我。谢谢你的回答 这是我的密码: d3.json("IKSK_LK_Goe_31463.json", function (collec
d3.json("IKSK_LK_Goe_31463.json", function (collection) {
overlay.afterAdd = function () { // Add the container when the overlay is added to the map.
color.domain([
//1,30
d3.min(collection, function(d) {return d.features.properties.EINWOHNER;}),
d3.max(collection, function(d) {return d.features.properties.EINWOHNER;})
]);
console.log(d3.max(collection, function(d) {return d.features.properties.EINWOHNER;}));
如果
d.features.properties.EINWOHNER
是一个整数值,或者您希望从中提取整数值(这就是最小值和最大值的意义),则在其前面添加一个'+'
,如下所示:
d3.min(collection, function(d) {return +d.features.properties.EINWOHNER;}),
d3.max(collection, function(d) {return +d.features.properties.EINWOHNER;})]);
正如其他人提到的,d3.max的输入应该是一个数组。 确保输入不是object,若是,则使用d3.values(collection)创建一个值数组 祝你好运
/Wille如其他人所述,在数值变量前面添加+可能会有所帮助 下面是一个非常简单的d3函数,用于获取min/max并将其用作域 d3.数据块(数组[,访问器]) 使用自然顺序返回给定数组中的最小值和最大值。这相当于同时调用d3.min和d3.max 因此,color.domain(d3.extent(…)也将正确设置域
希望它能有所帮助:)使用类似以下内容:
var xx = [{x:'one',y:1}, {x:'two',y:2}]; //array
var maxOfY = d3.max(xx, function(d){ return d.y;});
你能发布一个JSFIDLE吗?您应该检查“集合”并查看其结构。您可能没有正确使用最小值/最大值。您希望传入一个对象数组,然后“d”表示数组中的每个元素。因此,如果您的属性位于“collection”中的“features”数组的元素上,您可以调用“d3.min(collection.features,function(d){return d.properties.EINWOHNER;})”谢谢您,您的答案是正确的。你让我的一天(在三天的头痛之后:-)也值得注意的是d3.extent()函数,它以数组的形式返回数据的最小值和最大值,因此可以直接输入域。您使用它的方式与使用min和max的方式相同,它只是取代了同时使用两者的需要。
var xx = [{x:'one',y:1}, {x:'two',y:2}]; //array
var maxOfY = d3.max(xx, function(d){ return d.y;});