Javascript d3.hexbin插件-动态定义颜色域以适应数据

Javascript d3.hexbin插件-动态定义颜色域以适应数据,javascript,d3.js,Javascript,D3.js,我正在使用d3.hexbin插件开发一个六边形Binning页面 我已设法使用数据中的最小值和最大值动态定义轴的域 但是,我希望基于points变量动态生成bin颜色域 示例箱根据以下代码进行着色: var color = d3.scale.linear() .domain([0, 20]) .range(["white", "steelblue"]) .interpolate(d3.interpolateLab); 颜色范围映射到0到20之间的值。对于大型数据集,通常

我正在使用d3.hexbin插件开发一个六边形Binning页面

我已设法使用数据中的最小值和最大值动态定义轴的域

但是,我希望基于points变量动态生成bin颜色域

示例箱根据以下代码进行着色:

var color = d3.scale.linear()
    .domain([0, 20])
    .range(["white", "steelblue"])
    .interpolate(d3.interpolateLab);
颜色范围映射到0到20之间的值。对于大型数据集,通常有超过20个点的六边形容器,并且图表是“饱和”的

能否根据数据动态生成颜色域值[0,20]?是否有可能以某种方式从hexbin对象获得分配给BIN的最大和最小点数


感谢您的帮助,因为我对JavaScript不太感兴趣。

我会尝试在这个hexbin示例中使用的方法:

也就是说,将域定义为料仓尺寸的平均值和标准偏差的函数。将其转换回原来的Mike Bostock示例:

创建一个包含所有箱子大小的数组:

var bins = hexbin(points);
var counts = [];
bins.map(function (elem) {
    counts.push(elem.length)
});
根据计数数组设置颜色域:

在本例中,ss是最大值,但您也可以轻松地滚动自己的值,或者将域最大值设置为计数中的最大值,如下所示:

color.domain([0, d3.max(counts)]);

这是一个动态计算颜色域的实用程序:

你不能创建一个函数,从你的数据中返回最大值,然后在你的域中使用这些变量吗?d3中有一个函数,用于此-d3.extent-返回列的最低和最高值。我需要知道hexbin.js对象中计算出的存储箱中数据元素的最大数量。这个数字是每个箱子的d.length,但我不知道如何访问所有hexbin箱子的最大和最小d.length。
color.domain([0, d3.max(counts)]);