Published
Edited
Jul 29, 2021
3 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 constraintsKDE estimationPlot: 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 shoreWorker
ngraph: pagerank, louvain…
t-SNE VoronoiCloud ContoursCircular function drawingKruskal MazeMyceliumTravelling salesperson approximation on the globe, with t-SNEtsne.jstsne.js & worker
Also listed in…
Graphs
Hello
Insert cell
Insert cell
PIXEL = {
var container = md`<div style="width:${width}px; height: 400px">`;
yield container; // the container must exist before we call ngraph.pixel
var pix = ngraph.pixel(G, { container });
invalidation.then(() => {
pix = null;
}); // not sure how to dispose of the old renderer(???)
}
Insert cell
Insert cell
ngraph = ({
graph: await import("https://cdn.skypack.dev/ngraph.graph@19").then(
(d) => d.default
),
hits: await import("https://cdn.skypack.dev/ngraph.hits@2").then(
(d) => d.default
),
cw: await import("https://cdn.skypack.dev/ngraph.cw@2").then(
(d) => d.default
),
louvain: await import("https://cdn.skypack.dev/ngraph.louvain@2").then(
(d) => d.default
),
pixel: await import("https://cdn.skypack.dev/ngraph.pixel@2").then(
(d) => d.default
),
pagerank: await import("https://cdn.skypack.dev/ngraph.pagerank@2").then(
(d) => d.default
),
generators: await import("https://cdn.skypack.dev/ngraph.generators@19").then(
(d) => d.default
)
})
Insert cell
Insert cell
G = ngraph.generators.balancedBinTree(5)
// G = ngraph.generators.wattsStrogatz(100, 20, 0.50)
// G = ngraph.generators.grid3(5, 5, 5)
Insert cell
Insert cell
PAGERANK = ngraph.pagerank(G)
Insert cell
HUBS_AUTHORITIES = ngraph.hits(G)
Insert cell
CLUSTERS = {
var clusters = ngraph.louvain(G);
// now you can iterate over each node and get its community (aka class):
var classes = [];
G.forEachNode(function(node) {
classes.push( clusters.getClass(node.id) );
});
return classes;
}
Insert cell
LARGESTCLUSTER = {
var L = [];
CLUSTERS.forEach((i,j) => (L[i] || (L[i] = [])).push(j));
var M = [];
G.forEachNode(function(node) {
if (L[node.id] && L[node.id].length > M.length) M = L[node.id];
});
return M;
}
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