Public
Edited
Nov 21, 2024
2 forks
6 stars
Hello, A5Chandrupatla’s root-finding methodSidi’s root-finding methodRegular numbersDruidJS workerNatural breaksDistance to a segmentRay out of a convex hullWord Tour: 40k words and their friendsHello, @thi.ng/grid-iteratorsHead/tail breaksPseudo-blue noise shaderHow fast does walk-on-spheres converge?AoC 12: shortest path under constraints
KDE estimation
Plot: Correlation heatmapPoisson Finish 2Poisson disk sampling functionsWoS with transportSimple and surprising sortLocal medianTime series topological subsamplingUnion-FindLevel set experiment 1Mean value coordinatesPoisson potentialMiddle-squareWorld of squares (spherical)World of squaresLargest Inscribed SquareHello, PyWaveletsGeothmetic meandianHello, Reorder.jsGeometric MedianImage FFTTransport to a mapDisc TransportTP3: Power Diagram and Semi-Discrete Optimal TransportThe blue waveHello, genetic-jsSliced Optimal TransportDruidJSSelf-Organizing Maps meet DelaunayHello, polygon-clippingseedrandom, minimalWalk on Spheres 2Walk on SpheresHello, AutoencoderKaprekar’s numberVoronoiMap2DHello, ccwt.jsPolygon TriangulationQuantile.invert?Linear congruential generatorHue blurNeedle in a haystackMoving average blurApollo 11 implementation of trigonometric functions, by Margaret H. Hamilton (march 1969)2D curves intersectionThe 2D approximate Newton-Raphson methodInverting Lee’s Tetrahedral projectionLinde–Buzo–Gray stipplingMean shift clustering with kd-tree2D point distributionsShortest pathKahan SummationHello, delatinDijkstra’s algorithm in gpu.jsLloyd’s relaxation on a graphManhattan DiameterManhattan VoronoiMobility landscapes — an introductionDijkstra’s shortest-path treeH3 odditiesProtein MatrixConvex Spectral WeightsSort stuff by similarityKrigingDelaunay.findTrianglen-dimensions binning?Travelling with a self-organizing mapUMAP-o-MaticMNIST & UMAP-jsHello UMAP-jsMean shift clusteringLevenshtein transitionRd quasi-random sequencesAutomated label placement (countries)Phyllotaxis explainedMotionrugsPlanar hull (Andrew’s monotone chain algorithm)South Africa’s medial axisTravelling salesperson approximation with t-SNEDistance to shoreWorkerngraph: pagerank, louvain…t-SNE VoronoiCloud ContoursCircular function drawingKruskal MazeMyceliumTravelling salesperson approximation on the globe, with t-SNEtsne.jstsne.js & worker
Also listed in…
Interpolation
Insert cell
Insert cell
Insert cell
Insert cell
k = {
const t0 = performance.now();
const W = 1200;
const density2d = kde.density2d(points, {
bandwidth,
extent: [
[0, W],
[0, W]
],
bins: [W, W]
});

const canvas = DOM.canvas(W, W);
canvas.style.width = `${width / 2 - 10}px`;
canvas.style.height = `${width / 2 - 10}px`;
density2d.heatmap({ canvas, color });
const time = performance.now() - t0;
return Object.assign(canvas, { time });
}
Insert cell
b = {
const t0 = performance.now();
const W = 1200;
const data = new Float64Array(W * W);
for (const p of points) data[Math.floor(p[0]) + W * Math.floor(W - p[1])]++;
d3.blur2({ data, width: W }, bandwidth);
const canvas = heatmap(data, {
width: W,
upscale: (width / 2 - 10) / W,
color
});
const time = performance.now() - t0;
return Object.assign(canvas, { time });
}
Insert cell
kde = require("fast-kde@0.2")
Insert cell
k.time
Insert cell
b.time
Insert cell
import { heatmap } from "@fil/heatmap"
Insert cell
color = d3.scaleLinear().domain([0, 1]).range(["#000000", "#FFFFFF"])
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more