From ac5b22791c45b539733ea7ab8ce33c258cef32b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Tue, 27 Jun 2023 19:14:33 +0200 Subject: [PATCH] gods tree & barycentric fix (#1729) * gods * fix barycentric * Update CHANGELOG --------- Co-authored-by: Mike Bostock --- CHANGELOG.md | 31 ++++++++++++++++++++----------- docs/marks/tree.md | 2 +- img/barycentric-before-after.png | Bin 0 -> 24917 bytes img/tree-gods.png | Bin 0 -> 7462 bytes 4 files changed, 21 insertions(+), 12 deletions(-) create mode 100644 img/barycentric-before-after.png create mode 100644 img/tree-gods.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 376d7e123e6..371df99ba4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,25 +30,34 @@ Plot.plot({ }) ``` -The [tree mark](https://observablehq.com/plot/marks/tree) now supports a **textLayout** option, which defaults to *mirrored*, alternating the orientation of labels for internal (non-leaf) *vs.* external (leaf) nodes. The treeNode and treeLink marks now also support a new **treeFilter** option, allowing these marks to be filtered (without affecting the tree layout). +The [tree mark](https://observablehq.com/plot/marks/tree) now supports a **textLayout** option, which defaults to *mirrored* to alternate the orientation of labels for internal (non-leaf) *vs.* external (leaf) nodes. The treeNode and treeLink marks now also support a new **treeFilter** option, allowing these marks to be filtered without affecting the tree layout. -[TK Example of mirrored labels in a tree diagram.] +A small family tree diagram of Greek gods. Chaos beget Eros, Erebus, Tartarus, and Gaia; Gaia beget Mountains, Pontus, and Uranus. -The [tip mark](https://observablehq.com/plot/marks/tip) now automatically sets the pointer-events attribute to *none* when associated with the [pointer transform](https://observablehq.com/plot/interactions/pointer) when the the pointer is not sticky, as when hovering a chart without clicking to lock the pointer. This prevents the tip mark from interfering with interaction on other marks, such as clickable links. - -Fix [barycentric interpolation](https://observablehq.com/plot/marks/raster#interpolatorbarycentric-options) outside the convex hull of samples. +```js +Plot.plot({ + axis: null, + height: 100, + margin: 10, + marginLeft: 40, + marginRight: 120, + marks: [ + Plot.tree(gods, {textStroke: "white"}) + ] +}) +``` -[TK Before and after comparison of barycentric interpolation.] +The [barycentric interpolator](https://observablehq.com/plot/marks/raster#interpolatorbarycentric-options) now behaves correctly outside the convex hull of samples. The new algorithm (below right) radiates outwards from the hull, ensuring a continuous image; the old algorithm (below left) radiated inwards from values imputed on the frame’s edges, producing discontinuities. -TK Fix invisible rects with the [auto mark](https://observablehq.com/plot/marks/auto) when both dimensions are ordinal and the **mark** option is set to *bar*. +A before-and-after comparison of the barycentric interpolator applied to three sample points; in the new algorithm, lines radiate outward perpendicular from the triangle’s sides, producing a more coherent and understandable image. -TK Fix pointer transform on non-faceted marks in faceted plots. +The [tip mark](https://observablehq.com/plot/marks/tip) now automatically sets the pointer-events attribute to *none* when associated with the [pointer transform](https://observablehq.com/plot/interactions/pointer) when the the pointer is not sticky, as when hovering a chart without clicking to lock the pointer. This prevents the tip mark from interfering with interaction on other marks, such as clickable links. -TK Fix a regression with the [window transform](https://observablehq.com/plot/transforms/window) when using the *median*, *deviation*, *variance*, or percentile reducer. +The [auto mark](https://observablehq.com/plot/marks/auto) now renders as a cell, instead of a degenerate invisible rect, when **x** and **y** are both ordinal and the **mark** option is set to *bar*. The [tree mark](https://observablehq.com/plot/marks/tree) no longer produces duplicate tips with the **tip** option. The [rule mark](https://observablehq.com/plot/marks/rule) now respects the top-level **document** option, if any, when using the **clip** option. -Fix the **clip** option when the [rule mark](https://observablehq.com/plot/marks/rule) is used with a custom **document**. Fix the **tip** option with the [tree mark](https://observablehq.com/plot/marks/tree) to not produce duplicate tips. +The **title**, **ariaLabel**, and **href** channels no longer filter by default; these channels may now be sparsely defined and the associated mark instance will still render. -The **title**, **ariaLabel**, and **href** channels no longer filter by default. These channels may now be sparsely defined and the associated mark instance will still render. +The [pointer transform](https://observablehq.com/plot/interactions/pointer) now handles non-faceted marks in faceted plots. The [window transform](https://observablehq.com/plot/transforms/window)’s *median*, *deviation*, *variance*, and percentile reducers have been fixed. ## 0.6.8 diff --git a/docs/marks/tree.md b/docs/marks/tree.md index 4885fa5d725..25907a2ebb3 100644 --- a/docs/marks/tree.md +++ b/docs/marks/tree.md @@ -42,7 +42,7 @@ Plot.plot({ axis: null, height: 100, margin: 10, - marginLeft: 35, + marginLeft: 40, marginRight: 120, marks: [ Plot.tree(gods, {textStroke: "var(--vp-c-bg)"}) diff --git a/img/barycentric-before-after.png b/img/barycentric-before-after.png new file mode 100644 index 0000000000000000000000000000000000000000..54bf8824fa5f07348e506178ce199ecd1ce47a2b GIT binary patch literal 24917 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 V)d}U^S-`_{*~ZcO^#z~Q{{!;Il-mFR literal 0 HcmV?d00001 diff --git a/img/tree-gods.png b/img/tree-gods.png new file mode 100644 index 0000000000000000000000000000000000000000..8940d7ef4a456618c5fd11561e511cf22a5127e0 GIT binary patch literal 7462 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