Javascript d3.hexbin插件-动态定义颜色域以适应数据
我正在使用d3.hexbin插件开发一个六边形Binning页面 我已设法使用数据中的最小值和最大值动态定义轴的域 但是,我希望基于points变量动态生成bin颜色域 示例箱根据以下代码进行着色: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之间的值。对于大型数据集,通常
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)]);