Published
Edited
Jun 8, 2021
7 stars
Hello, PGLiteINSEE ParquetHello, apcachDruidJS workerHello, OrbitWord Tour: 40k words and their friendsHello, spectral.jsHello, petite-vueHello, @thi.ng/grid-iteratorsHello, thumbhashHello, SwissGLHello, QOI (and glitches)Hello, orbHello, cosmographHello, TabulatorUsing d3.blur with PlotMath.cbrtHello debounceColorcetHello, gliiHello, Open MeteoHello, PyWaveletsHello, typesenseHello, libgifHello, kmeans-engineHappy anniversary, Project Gutenberg!Hello, fflateHello, ArchieML!Hello, d3-bboxCollide
Hello, jsgeoda!
Hello, EDTF!Hello, protovis!Hello, placekeyHello, fuse.jsHello, Reorder.jsHello, shadow DOMjszipHello, procedural-glHello, qhullHello, genetic-jsDruidJSHello, Tippy.jsHello, paintWorkletBig πHello, AutoencoderHello, Shakespearean UUIDsHello, ccwt.jsHello, constrainautorHello, talismanHello, polygon-offsetHello p-queueHello async-poolHello rollup-plugin-asciiHello, algebra.jsHello, pixi.jsHello, d3-renderHello zip/unzipCumulative Wikipedia DonationsHTML <details>regl textureHello, npyjsHello protobufHello, pencil touchHello, LOESSHello html2canvaslegra mapscolor2cssHello, ecsy2D point distributionsHello, delatinThe gpu.js loopDijkstra’s shortest-path treeHello nojacko/Dijkstras-jsHello, tcort/dijkstrajsHello, lambdabaa/dijkstraHello, gpu.js v2Hello jsqrHello qrcodeHello SharedArrayBufferHello GamePad APIHello vtk.jsHello nd4jsHello BiofabricTravelling with a self-organizing mapHello glitchHello UMAP-jsHello pandemoniumHello iocaneHello JSON-editorHello d3-griddingHello mljs/knnWorkerHello lalolibImage to GPU.jsImage to blink.jsTissot's indicatrixVega projectionsHello WebCLGLUsing d3-inertia with observableVideo contouring 3ngraph: pagerank, louvain…Union-FindPerceptron (simple statistics)mljsHello h3-jsEmoji FlagsHello, poisson-disk-sampling
Also listed in…
Geo
Clustering
Insert cell
Insert cell
// see https://observablehq.com/@nofurtherinformation/jsgeoda-binning-playground
jsgeoda = import('https://cdn.skypack.dev/jsgeoda')
Insert cell
geoda = jsgeoda.New()
Insert cell
nat = fetch("https://webgeoda.github.io/data/natregimes.geojson")
.then((d) => d.arrayBuffer())
.then((data) => geoda.read_geojson(data))
Insert cell
geoda.get_numobs(nat)
Insert cell
hr60 = geoda.get_col(nat, "HR60")
Insert cell
geoda.get_colnames(nat) // this example is fixed! 🪄 thank you @lixun910
Insert cell
Insert cell
geoda.stddev_breaks(d3.range(1000))
Insert cell
nbreaks = geoda.natural_breaks(4, data)
Insert cell
data = Array.from({ length: 200 }, (_, i) => Math.random() + 2 * (i % 6))
Insert cell
Plot.plot({
marks: [
Plot.dotX(data, { fill: (d) => d }),
Plot.ruleX(geoda.natural_breaks(8, data))
]
})
Insert cell
Plot.plot({
marks: [
Plot.dotX(data, { fill: (d) => d }),
Plot.ruleX(geoda.stddev_breaks(data))
]
})
Insert cell
Plot.plot({
marks: [
Plot.dotX(data, { fill: (d) => d }),
Plot.ruleX(geoda.hinge15_breaks(data))
]
})
Insert cell
Plot.plot({
marks: [
Plot.dotX(data, { fill: (d) => d }),
Plot.ruleX(geoda.hinge30_breaks(data))
]
})
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