kernel_density = {
let x = d3.scaleLinear().domain(d3.extent(data)).range([40, plotWidth - 20])
let thresholds = x.ticks(numbins)
let bandwidth = randoms_fn.find(d=> d.name==random_fn.name).bandwidth
let density = kde(epanechnikov(bandwidth), thresholds, data)
let sum = d3.sum(density, d => d[1])
return density.map(d => [d[0], d[1] / sum])
}