This module is now obsolete, superseded by d3.blur
This code was excerpted from d3-contour, enriched and optimized. It now exists as a pull-request to d3-array. It can be used as a plugin for D3 or as a stand-alone module.
To use call:
<script src="https://unpkg.com/array-blur"></script>
or in node:
const B = require("array-blur");
const blurred_data = B.blur().radius(1)([0, 0, 0, 13.5, 0, 0, 0]); // [0.5, 1.5, 3, 3.5, 3, 1.5, 0.5, width: 7, height: 1]
Creates a blur transformer, which can blur (or smooth) an iterable by three iterations of a moving average transform.
# blur.radius([radius])
If radius is specified, sets the radius of the transformation: on each iteration, the value of a point is transformed into the mean value of itself and the radius points of data surrounding it on the left and on the right (taking into account the edges). If radius is not specified, returns the current radius (if horizontal and vertical radii have been set separately, returns their average value). If radius is not an integer value, the blurring is applied partially. Defaults to 5.
# blur.value([value])
If value is specified, sets the value accessor, which will read the values of the iterator. If not specified, returns the current accessor. Defaults to the special null accessor, which copies the values directly (faster than an identity function).
Example:
const blurred = blur().value(d => d.temperature)(data);
# blur.width([width])
If width is specified, sets the width of the transformation, otherwise returns the current width. When 0 < width < length, blur considers that the array describes values in two dimensions—as a rectangle of a certain width (height inferred as length divided by width). In that case each iteration involves an horizontal (x) blurring, followed by a vertical (y) blurring. Defaults to undefined (horizontal dimension).
# blur.radiusX([radius])
If radius is specified, sets the horizontal radius of the transformation, otherwise returns it. (Use 0 for vertical blurring.)
# blur.radiusY([radius])
If radius is specified, sets the vertical radius of the transformation, otherwise returns it. (Use 0 for horizontal blurring.)