dan*_*ani 1 javascript data-visualization normal-distribution
我想为我的可视化项目(在JavaScript中)创建一些"模拟数据".
优选地,我想总共分配X单元到ý不同组与Z步长间隔根据一些概率分布函数,即,正常或对数正态分布.
例:
使用常规密度函数将正好100个单位分配给0-5000,5000-10000,[...],75000-80000组.
应该呈现这样的东西:
binNames = [ "0-5000", "5000-10000", [...] ]
binData = [ 0,0,0,1,2,10,12,14,12,10 [...] ] //SUM = 100
Run Code Online (Sandbox Code Playgroud)
(如果我可以用简单的种子参数引入一些偏斜,那将是一个奖励.)
该D3.js库具有用于此的有用工具,d3.random.normal(参考,代码).即使您没有使用D3,也可以将该功能复制到您自己的代码中.它返回一个生成器函数,它将根据您提供的平均值和标准偏差生成一个具有正态分布的随机数.
使用该功能,您可以以您想要的格式制作一些随机数据,如下所示:
// data generator
var bins = 16,
target = 100,
step = 5000,
max = bins * step,
stddev = max * .15,
data = [],
generator = d3.random.normal(max/2, stddev),
x=0, y=0;
// set up bins
while (x++ < bins) data.push(0);
// add numbers
while (y++ < target) {
// get a new number
var number = generator();
// don't allow numbers outside the desired range
number = ~~Math.max(0, Math.min(number, max));
// increment the bin
bin = ~~(number / max * bins);
data[bin]++;
}
Run Code Online (Sandbox Code Playgroud)
我做了一个小动画直方图作为例子:http://bl.ocks.org/2034281
| 归档时间: |
|
| 查看次数: |
2375 次 |
| 最近记录: |