Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* image data mark * PreTtiER * handle invalid data; stride, offset * handle flipped images * archive test failure artifacts * skip image data tests, for now * PreTtiER * only ignore generated images in CI * only ignore large generated images * fillOpacity * tweak * fix formula * PreTtiER * volcano * more idiomatic heatmap * fill as f(x, y) * pixel midpoints * PreTtiER * not pixelated, again * PreTtiER * raster * pixelRatio * fix aria-label; comments * Goldstein–Price * tentative documentation for Plot.raster * fix partial coverage of sample fill * raster fillOpacity * require x1, y1, x2, y2 * validate width, height * fix for sparse samples * better error on missing scales * document * floor rounded (or floored?) * exploration for a "nearest" raster interpolate method * barycentric interpolation see https://observablehq.com/@visionscarto/igrf-90 * raster tuple shorthand * barycentric interpolate and extrapolate * only maybeTuple if isTuples * allow marks to apply scales selectively (like we do with projections) * interpolate on values * 3 interpolation methods for the nearest neighbor: voronoi renderCell, quadree.find, delaunay.find. This is completely gratuitous since they all run in less than 1ms… It's even hard to know which one is the fastest, because if I loop on 100s of them the browser starts to thrash (allocating so much memory for images it immediately discards, I guess…) * barycentric walmart * fold mark.project into mark.scale * fix barycentric extrapolation * materialize fewer arrays * use channel names * don’t pass {r, g, b, a} * don’t overload x & y channels * fix inverted x or y; simplify example * simpler * fix grid orientation * only stroke if opaque * optional x1, y1, x2, y2 * shorten * fix order * const * rasterize * The performance measurements I had done were just rubbish (I forgot to await on the promises!). Measuring the three methods on the ca55 dataset I see this order: voronoi cellRender (180ms), delaunay find (220ms), quadtree (500ms). * rasterize * tolerance for points that are on a triangle's edge * use a symbol for values that need extrapolation, simplify and fix a few issues, use a mixing function for categorical interpolation * rasterize with walk on spheres * document rasterize * pixelSize * default to full frame * remove ignored options * reformat options * fix the ca55 tests (the coordinates represent a planar projection) * caveat about webkit/safari * remove console.log * more built-in rasterizers * fix walk-on-spheres implementation; remove blur * port fixes to wos * adaptive extrapolation * fillOpacity fixes * renames walk-on-spheres to random-walk; documents the rasterize option rationale for the renaming: "random-walk" is more commonly known, and expresses well enough what's happening. Walk on spheres converges much faster than a basic random walk would, and makes it feasible, but it is a question of implementation. * a constant fillOpacity informs the opacity property on the g element, not the opacity of each pixel * fix bug with projection clip in indirectStyles * performance optimizations for randow-walk: 1. use rasterizeNull to boot; if we have more samples (and a costlier delaunay), at least we have less pixels to impute. 2. cache more aggressively the result of delaunay.find: at the beginning of each line, for each pixel, and for each step of the walk On actual tests it can be up to 2x faster. * sample pixel centroids * fix handling of undefined values * use transform for equirectangular coordinates * don’t delete * stroke if constant fillOpacity * fix test snapshots * fix typo in test name * note potential bias caused by stroke * rename tests * don’t bootstrap random-walk with none * terminate walk when minimum distance is reached * comment re. opacity * comment re. none order bias * contour mark * dense grid contours * consolidate code * more code consolidation * cleaner * cleaner deferred channels * interpolate, not rasterize * blur * cleaner * use typed array when possible * optimize barycentric interpolation * nicer contours for ca55 with barycentric+blur 3; support raster blur Contour blurring is unchanged, and blurs the abstract data (with a linear interpolation). Raster blurring is made with d3.blurImage. Two consequences: * we can now blur “categorical” colors, if we want to smooth out the image and give it a polished look in the higher variance regions. (This works very well when we have two colors, but with more categories there is a risk of hiding the components of a color, making the image more difficult to understand. Anyway, it’s available as an option to play with.) * for quantitative data, and with a color scale with continuous scheme and linear transform, this is very close to linear interpolation; but if the underlying data is better rendered with a log color scale, the color interpolation takes this into account (which IMO is better). * ignore negative blur * cleaner tests * for contours, filter points with missing X and Y before calling the interpolate function, and ignore x and y filters on geometries * fix barycentric interpolate for filtered points note: the penguins dataset is full of surprises since some points are occluded by others of a different species… * contour shorthands * fix contour filtering * filter value, too * materialize x and y when needed * default to nearest * comment * remove obsolete opacity trick * better contour thresholds; fix test * nullish instead of undefined * renderBounds * fix circular import * a hand-written Peters projection seemed more fun than the sqrt scale; tests the same thing * update raster documentation with interpolate; document contour * document Plot.identity * peters axes * symmetric Peters * style tweak * NaN instead of null * avoid error when empty quantile domain * faceted sampler raster * fix test snapshot * faceted contour; fix dense faceted raster … and fix default contour thresholds * expose spatial interpolators * pass x, y, step * error when data undefined, but not null * d3 7.8.1 Co-authored-by: Philippe Rivière <[email protected]>
- Loading branch information