From 0fbc897ffd947eb89bae3eaa82c529ba61142e63 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Mon, 11 Sep 2023 10:21:05 -0700 Subject: [PATCH 01/10] draft changelog --- CHANGELOG.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7de2c7826..97d80eed6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,35 @@ Year: **Current (2023)** · [2022](./CHANGELOG-2022.md) · [2021](./CHANGELOG-2021.md) +## 0.6.11 + +[Released September TK, 2023.](https://github.com/observablehq/plot/releases/tag/v0.6.11) + +Code +- custom tip format ([#1823](https://github.com/observablehq/plot/pull/1823)) +- better ordinal axes with intervals ([#1790](https://github.com/observablehq/plot/pull/1790)) +- channel label override ([#1838](https://github.com/observablehq/plot/pull/1838)) +- empty bins fall back on the first element of their group ([#1837](https://github.com/observablehq/plot/pull/1837)) +- pass fontVariant to the axis label ([#1827](https://github.com/observablehq/plot/pull/1827)) +- fix symbol set hint when fill is a constant currentColor ([#1830](https://github.com/observablehq/plot/pull/1830)) +- the denseInterval option for k must also reduce k1 and k2 if present ([#1828](https://github.com/observablehq/plot/pull/1828)) +- fix tip flicker ([#1826](https://github.com/observablehq/plot/pull/1826)) +- exclusiveFacets ([#1649](https://github.com/observablehq/plot/pull/1649)) +- expose a deduplicated ordinal domain ([#1813](https://github.com/observablehq/plot/pull/1813)) +- expose instantiated scales descriptors in the render API ([#1810](https://github.com/observablehq/plot/pull/1810)) + +Tests +- tests for coverage ([#1825](https://github.com/observablehq/plot/pull/1825)) +- document test:coverage ([#1820](https://github.com/observablehq/plot/pull/1820)) +- Add test coverage ([#1818](https://github.com/observablehq/plot/pull/1818)) +- compare image data ([#1807](https://github.com/observablehq/plot/pull/1807)) + +Docs +- add examples grid ([#1834](https://github.com/observablehq/plot/pull/1834)) +- only top margin for figures 🤷 +- downgrade vite, vitepress +- update vitepress, fix a build crash, add a sitemap ([#1809](https://github.com/observablehq/plot/pull/1809)) + ## 0.6.10 [Released August 14, 2023.](https://github.com/observablehq/plot/releases/tag/v0.6.10) From 89035b052c429e0877f60a896aa883e06bf341f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Tue, 12 Sep 2023 17:58:52 +0200 Subject: [PATCH 02/10] tip --- CHANGELOG.md | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 97d80eed6b..9215a39963 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,8 +6,30 @@ Year: **Current (2023)** · [2022](./CHANGELOG-2022.md) · [2021](./CHANGELOG-20 [Released September TK, 2023.](https://github.com/observablehq/plot/releases/tag/v0.6.11) -Code -- custom tip format ([#1823](https://github.com/observablehq/plot/pull/1823)) +The new **format** option controls the order and formatting of the [tip mark](https://observablehq.com/plot/marks/tip)’s channels. + +The **format** option is an key-value object mapping channel names to formats; each [format](https://observablehq.com/plot/features/formats) can be a string (to format numbers or dates with the respective number or time format), or a function that receives the value as input and returns a string. Use null or false to suppress the channel. The order of channels in the tip follow their order in the format object. Channels that have not been listed in the format object are appended. (Custom channels can be specified, as usual, with the **channels** option.) The name of the channel can be specified by giving a label to the corresponding scale, or defining it as an object with a **value** and a **label**, or simply by the name given in the **channels** option. + +The **tip** mark option can now be an object of options to pass to the derived tip mark. These options include a new **pointer** option to control which pointer mode is used (_x_, _y_, or _xy_, for pointerX, pointerY, or pointer respectively). + +[IMAGE TK] + +```js +Plot.dot(cars, { + x: "power (hp)", + y: "weight (lb)", + tip: { + pointer: "xy", + channels: { start: "0-60 mph (s)" }, + format: { start: (d) => `${d}s`, x: null, y: ".2f" } + } +}).plot() +``` + +_In the chart above, the start custom channel is formatted as a duration in seconds, followed by the y channel formatted as a floating-point number with two decimal places. The x channel is suppressed._ + + + - better ordinal axes with intervals ([#1790](https://github.com/observablehq/plot/pull/1790)) - channel label override ([#1838](https://github.com/observablehq/plot/pull/1838)) - empty bins fall back on the first element of their group ([#1837](https://github.com/observablehq/plot/pull/1837)) From feed285e717371ed2c38778d8fa9b8e27241b1d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Tue, 12 Sep 2023 22:10:43 +0200 Subject: [PATCH 03/10] edits --- CHANGELOG.md | 57 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9215a39963..9459b28d7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,9 @@ Year: **Current (2023)** · [2022](./CHANGELOG-2022.md) · [2021](./CHANGELOG-20 [Released September TK, 2023.](https://github.com/observablehq/plot/releases/tag/v0.6.11) -The new **format** option controls the order and formatting of the [tip mark](https://observablehq.com/plot/marks/tip)’s channels. +The new **format** option controls the order and formatting of the [tip mark](https://observablehq.com/plot/marks/tip)’s channels. ([#1823](https://github.com/observablehq/plot/pull/1823)) -The **format** option is an key-value object mapping channel names to formats; each [format](https://observablehq.com/plot/features/formats) can be a string (to format numbers or dates with the respective number or time format), or a function that receives the value as input and returns a string. Use null or false to suppress the channel. The order of channels in the tip follow their order in the format object. Channels that have not been listed in the format object are appended. (Custom channels can be specified, as usual, with the **channels** option.) The name of the channel can be specified by giving a label to the corresponding scale, or defining it as an object with a **value** and a **label**, or simply by the name given in the **channels** option. +The **format** option is an key-value object mapping channel names to formats; each [format](https://observablehq.com/plot/features/formats) can be a string (to format numbers or dates with the respective number or time format), or a function that receives the value as input and returns a string. Use null or false to suppress the channel. The order of channels in the tip follow their order in the format object. Channels that have not been listed in the format object are appended. (Custom channels can be specified, as usual, with the **channels** option.) The name of the channel can be specified by giving a label to the corresponding scale, or defining it as an object with a **value** and a **label** ([#1838](https://github.com/observablehq/plot/pull/1838)), or simply by the name given in the **channels** option. The **tip** mark option can now be an object of options to pass to the derived tip mark. These options include a new **pointer** option to control which pointer mode is used (_x_, _y_, or _xy_, for pointerX, pointerY, or pointer respectively). @@ -29,29 +29,38 @@ Plot.dot(cars, { _In the chart above, the start custom channel is formatted as a duration in seconds, followed by the y channel formatted as a floating-point number with two decimal places. The x channel is suppressed._ +Ordinal axes generated from a temporal or quantitative scale do now generalize their scale’s interval (if specified), resulting in more readable ticks. For instance, a bar chart representing, says, one value per month over the course of 5 years might be represented with 5 ticks indicating the beginning of each year, or by 10 ticks indicating January and July, depending on the desired number of ticks. The generalization returns non-ambiguous intervals: for example, days can be generalized to weeks or months, but weeks can only be generalized into multiple weeks — not months or years since those are not multiples of 7 days. ([#1790](https://github.com/observablehq/plot/pull/1790)) -- better ordinal axes with intervals ([#1790](https://github.com/observablehq/plot/pull/1790)) -- channel label override ([#1838](https://github.com/observablehq/plot/pull/1838)) -- empty bins fall back on the first element of their group ([#1837](https://github.com/observablehq/plot/pull/1837)) -- pass fontVariant to the axis label ([#1827](https://github.com/observablehq/plot/pull/1827)) -- fix symbol set hint when fill is a constant currentColor ([#1830](https://github.com/observablehq/plot/pull/1830)) -- the denseInterval option for k must also reduce k1 and k2 if present ([#1828](https://github.com/observablehq/plot/pull/1828)) -- fix tip flicker ([#1826](https://github.com/observablehq/plot/pull/1826)) -- exclusiveFacets ([#1649](https://github.com/observablehq/plot/pull/1649)) -- expose a deduplicated ordinal domain ([#1813](https://github.com/observablehq/plot/pull/1813)) -- expose instantiated scales descriptors in the render API ([#1810](https://github.com/observablehq/plot/pull/1810)) - -Tests -- tests for coverage ([#1825](https://github.com/observablehq/plot/pull/1825)) -- document test:coverage ([#1820](https://github.com/observablehq/plot/pull/1820)) -- Add test coverage ([#1818](https://github.com/observablehq/plot/pull/1818)) -- compare image data ([#1807](https://github.com/observablehq/plot/pull/1807)) - -Docs -- add examples grid ([#1834](https://github.com/observablehq/plot/pull/1834)) -- only top margin for figures 🤷 -- downgrade vite, vitepress -- update vitepress, fix a build crash, add a sitemap ([#1809](https://github.com/observablehq/plot/pull/1809)) +[image TK] + +```js +Plot.barY(aapl, Plot.groupX({y: "median"}, {x: "Date", y: "Close"})) + .plot({x: {interval: "month"}}) +``` + +The **fontVariant** option is now passed to the axis label as well as to the axis tick labels ([#1827](https://github.com/observablehq/plot/pull/1827)) + +The **interval** option for *x* now also reduces *x1* and *x2* if present (and likewise for *y*) ([#1828](https://github.com/observablehq/plot/pull/1828)) + +A transform can now request exclusive facets, opening the door to richer operations on facets ([#1649](https://github.com/observablehq/plot/pull/1649)) + +The domain exposed with an ordinal scale is now deduplicated, for consistency ([#1813](https://github.com/observablehq/plot/pull/1813)) + +The render API now exposes the instantiated scales descriptors in its scales argument, opening the door to richer developments ([#1810](https://github.com/observablehq/plot/pull/1810)) + +The tip mark now hides the temporary tip before computing its callout, avoiding a flickering in some interactive use cases ([#1826](https://github.com/observablehq/plot/pull/1826)) + +Fix a bug where empty bins might generate undefined colors — they now fall back on the first element of their group ([#1837](https://github.com/observablehq/plot/pull/1837)) + +Fix a bug where the symbol set hint was ignored if fill was specified as a constant currentColor ([#1830](https://github.com/observablehq/plot/pull/1830)) + +Fix a bug where the forward slash delimiter was applied by the tree transform in addition to the custom delimiter. ([#1850](https://github.com/observablehq/plot/pull/1850) + +Image tests are now more reliable across platforms ([#1807](https://github.com/observablehq/plot/pull/1807)) + +Test coverage reports are now easier to generate (see [Contributing](https://github.com/observablehq/plot/blob/main/CONTRIBUTING.md#testing)) + +The documentation website now has a stylish hexagonal grid of examples ([#1834](https://github.com/observablehq/plot/pull/1834)) ## 0.6.10 From d524b253b37dd6b716b698e34a7661fb59ed598a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Wed, 13 Sep 2023 18:07:17 +0200 Subject: [PATCH 04/10] format --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9459b28d7a..f1a9cc9ce1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,8 +20,8 @@ Plot.dot(cars, { y: "weight (lb)", tip: { pointer: "xy", - channels: { start: "0-60 mph (s)" }, - format: { start: (d) => `${d}s`, x: null, y: ".2f" } + channels: {start: "0-60 mph (s)"}, + format: {start: (d) => `${d}s`, x: null, y: ".2f"} } }).plot() ``` From 0d98898c174e0c8af55ff2bd39e7f0bc1954e021 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Wed, 13 Sep 2023 21:02:38 +0200 Subject: [PATCH 05/10] edits, document tip **format** --- CHANGELOG.md | 62 +++++++++++++++++++++------------------ docs/features/scales.md | 2 +- docs/marks/tip.md | 34 ++++++++++++++++++++- img/temporal-ordinal.png | Bin 0 -> 12171 bytes img/tip-custom.png | Bin 0 -> 86211 bytes 5 files changed, 68 insertions(+), 30 deletions(-) create mode 100644 img/temporal-ordinal.png create mode 100644 img/tip-custom.png diff --git a/CHANGELOG.md b/CHANGELOG.md index f1a9cc9ce1..5117619fe0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,61 +6,67 @@ Year: **Current (2023)** · [2022](./CHANGELOG-2022.md) · [2021](./CHANGELOG-20 [Released September TK, 2023.](https://github.com/observablehq/plot/releases/tag/v0.6.11) -The new **format** option controls the order and formatting of the [tip mark](https://observablehq.com/plot/marks/tip)’s channels. ([#1823](https://github.com/observablehq/plot/pull/1823)) +The new **format** option enables a custom order and formatting of the channels in the [tip mark](https://observablehq.com/plot/marks/tip). -The **format** option is an key-value object mapping channel names to formats; each [format](https://observablehq.com/plot/features/formats) can be a string (to format numbers or dates with the respective number or time format), or a function that receives the value as input and returns a string. Use null or false to suppress the channel. The order of channels in the tip follow their order in the format object. Channels that have not been listed in the format object are appended. (Custom channels can be specified, as usual, with the **channels** option.) The name of the channel can be specified by giving a label to the corresponding scale, or defining it as an object with a **value** and a **label** ([#1838](https://github.com/observablehq/plot/pull/1838)), or simply by the name given in the **channels** option. - -The **tip** mark option can now be an object of options to pass to the derived tip mark. These options include a new **pointer** option to control which pointer mode is used (_x_, _y_, or _xy_, for pointerX, pointerY, or pointer respectively). - -[IMAGE TK] +A tip with a custom order and formatting of the channel values. ```js -Plot.dot(cars, { - x: "power (hp)", - y: "weight (lb)", +Plot.dot(olympians, { + x: "weight", + y: "height", + stroke: "sex", + channels: { + name: "name", + nationality: "nationality", + sport: "sport" + }, tip: { - pointer: "xy", - channels: {start: "0-60 mph (s)"}, - format: {start: (d) => `${d}s`, x: null, y: ".2f"} + format: { + name: true, + y: (d) => `${d}m`, + x: (d) => `${d}kg`, + stroke: false + } } }).plot() ``` -_In the chart above, the start custom channel is formatted as a duration in seconds, followed by the y channel formatted as a floating-point number with two decimal places. The x channel is suppressed._ +The **tip** mark option can now be specified as an options object to pass to the derived tip mark, as the example above demonstrates. A new **pointer** option allows to control which pointer mode is used (_x_, _y_, or _xy_, for pointerX, pointerY, or pointer respectively). +Ordinal axes generated from a temporal or quantitative scale now generalize their scale’s **interval** (if specified), resulting in more readable ticks. For instance, a bar chart with daily values now sports a multi-line axis with, say, a label every week, or month, or quarter… depending on the scale’s domain. -Ordinal axes generated from a temporal or quantitative scale do now generalize their scale’s interval (if specified), resulting in more readable ticks. For instance, a bar chart representing, says, one value per month over the course of 5 years might be represented with 5 ticks indicating the beginning of each year, or by 10 ticks indicating January and July, depending on the desired number of ticks. The generalization returns non-ambiguous intervals: for example, days can be generalized to weeks or months, but weeks can only be generalized into multiple weeks — not months or years since those are not multiples of 7 days. ([#1790](https://github.com/observablehq/plot/pull/1790)) - -[image TK] +A temporal bar chart with a multi-line axis. ```js Plot.barY(aapl, Plot.groupX({y: "median"}, {x: "Date", y: "Close"})) .plot({x: {interval: "month"}}) ``` -The **fontVariant** option is now passed to the axis label as well as to the axis tick labels ([#1827](https://github.com/observablehq/plot/pull/1827)) +The **fontVariant** option is now passed to the axis label, not only to the tick labels. + +A channel can now be specified as an object with a **value** and a **label**. -The **interval** option for *x* now also reduces *x1* and *x2* if present (and likewise for *y*) ([#1828](https://github.com/observablehq/plot/pull/1828)) +The render API now exposes the instantiated scales descriptors in its scales argument, opening the door to richer developments. -A transform can now request exclusive facets, opening the door to richer operations on facets ([#1649](https://github.com/observablehq/plot/pull/1649)) +Colors expressed with the [CSS Color Module Level 5](https://www.w3.org/TR/css-color-5/) syntax are now recognized as literal values. This allows to use CSS expressions (such as `var(--red)`), wide gamut colors such as this vivid orange `color(display-p3 1 0.5 0)`, and more as browser support improves. -The domain exposed with an ordinal scale is now deduplicated, for consistency ([#1813](https://github.com/observablehq/plot/pull/1813)) +On exposed ordinal scales, the domain is now deduplicated. -The render API now exposes the instantiated scales descriptors in its scales argument, opening the door to richer developments ([#1810](https://github.com/observablehq/plot/pull/1810)) +Fix the **interval** option in the bin transform to reduce not only *x* but also *x1* and *x2* (and likewise for *y1* and *y2*). -The tip mark now hides the temporary tip before computing its callout, avoiding a flickering in some interactive use cases ([#1826](https://github.com/observablehq/plot/pull/1826)) +Fix the stack transform when using the **facet**: exclude option. -Fix a bug where empty bins might generate undefined colors — they now fall back on the first element of their group ([#1837](https://github.com/observablehq/plot/pull/1837)) +The tip mark now hides the temporary tip before computing its callout, avoiding flickering in some interactive use cases. -Fix a bug where the symbol set hint was ignored if fill was specified as a constant currentColor ([#1830](https://github.com/observablehq/plot/pull/1830)) +Fix a bug where empty bins generated undefined colors — they now fall back on the first element of their group. -Fix a bug where the forward slash delimiter was applied by the tree transform in addition to the custom delimiter. ([#1850](https://github.com/observablehq/plot/pull/1850) +Fix a bug where the symbol set hint was ignored if fill was specified as a constant currentColor. -Image tests are now more reliable across platforms ([#1807](https://github.com/observablehq/plot/pull/1807)) +Fix the tree transform when using a custom delimiter. -Test coverage reports are now easier to generate (see [Contributing](https://github.com/observablehq/plot/blob/main/CONTRIBUTING.md#testing)) +Image tests are now more reliable across platforms. Test coverage reports are now easier to generate (see [Contributing](https://github.com/observablehq/plot/blob/main/CONTRIBUTING.md#testing)). -The documentation website now has a stylish hexagonal grid of examples ([#1834](https://github.com/observablehq/plot/pull/1834)) +The [documentation website](https//observablehq.com/plot/) now has a stylish hexagonal grid of examples on the home page. ## 0.6.10 diff --git a/docs/features/scales.md b/docs/features/scales.md index cb263345c4..52f3e2fc39 100644 --- a/docs/features/scales.md +++ b/docs/features/scales.md @@ -940,7 +940,7 @@ Plot implicitly generates an [axis mark](../marks/axis.md) for position scales i * **tickPadding** - the separation between the tick and its label (in pixels; default 3) * **tickFormat** - either a function or specifier string to format tick values; see [Formats](./formats.md) * **tickRotate** - whether to rotate tick labels (an angle in degrees clockwise; default 0) -* **fontVariant** - the font-variant attribute for ticks; defaults to *tabular-nums* if quantitative +* **fontVariant** - the font-variant attribute; defaults to *tabular-nums* if quantitative * **label** - a string to label the axis * **labelAnchor** - the label anchor: *top*, *right*, *bottom*, *left*, or *center* * **labelArrow** - the label arrow: *auto* (default), *up*, *right*, *down*, *left*, *none*, or true diff --git a/docs/marks/tip.md b/docs/marks/tip.md index 75aadc0cc1..c1f5ad4f89 100644 --- a/docs/marks/tip.md +++ b/docs/marks/tip.md @@ -129,7 +129,39 @@ Plot.rectY(olympians, Plot.binX({y: "sum"}, {x: "weight", y: (d) => d.sex === "m ``` ::: -The tip mark does not provide options for formatting channel names or values. When a channel is bound to a scale, the scale’s label is shown instead of the channel name. If you desire greater customization, please upvote [#1612](https://github.com/observablehq/plot/issues/1612). +The order of channels in the tip and the formatting of their values can be customized with the **format** option , which accepts a key-value object mapping channel names to formats. + +Each [format](https://observablehq.com/plot/features/formats) can be a string (to format numbers or dates with the respective number or time format), a function that receives the value as input and returns a string, true to use the default format, and null or false to suppress. + +The order of channels in the tip follows their order in the format object. Channels that are not listed in the format object are appended. The name of the channel comes from the scale’s label, if any, or from the channel’s **label** if it is specified as an object with a **value** property, or by its name in the **channels** option, or, lastly, by its default name (such as *x*). + +:::plot defer +```js +Plot.dot(olympians, { + x: "weight", + y: "height", + stroke: "sex", + channels: { + name: "name", + nationality: { + value: "nationality", + label: "country" + }, + sport: "sport" + }, + tip: { + format: { + name: true, + sport: true, + nationality: true, + y: (d) => `${d}m`, + x: (d) => `${d}kg`, + stroke: false + } + } +}).plot() +``` +::: The tip mark supports nine different orientations specified by the **anchor** option: the four sides (*top*, *right*, *bottom*, *left*), the four corners (*top-left*, *top-right*, *bottom-right*, *bottom-left*), and *middle*. Note that when *middle* is used, the tip will obscure its anchor point. diff --git a/img/temporal-ordinal.png b/img/temporal-ordinal.png new file mode 100644 index 0000000000000000000000000000000000000000..b9b1cc009b90fde6ada6df9578a2b3568228eed6 GIT binary patch literal 12171 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 Huk-%}a6@P+ literal 0 HcmV?d00001 diff --git a/img/tip-custom.png b/img/tip-custom.png new file mode 100644 index 0000000000000000000000000000000000000000..a14663221449c16833c63af2f09e867efd7de76d GIT binary patch literal 86211 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 Vda~gDS_%kwEY0Dt8q+Ix{sG6L?qUD{ literal 0 HcmV?d00001 From a29e38aaeb47fb40600be0b696caedd9ca5196bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Wed, 13 Sep 2023 21:04:06 +0200 Subject: [PATCH 06/10] delimiter = character --- docs/transforms/tree.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/transforms/tree.md b/docs/transforms/tree.md index c836b30f65..3f0d1c9a23 100644 --- a/docs/transforms/tree.md +++ b/docs/transforms/tree.md @@ -60,7 +60,7 @@ Given a text file, you can use `text.split("\n")` to split the contents into mul The following options control how the tabular data is organized into a hierarchy: * **path** - a column specifying each node’s hierarchy location; defaults to identity -* **delimiter** - the path separator; defaults to forward slash (/) +* **delimiter** - the path separator, a single character; defaults to forward slash (/) The **path** column is typically slash-separated, as with UNIX-based file systems or URLs. From 0b62f4fe13b9133ec4b8387786325a0a38183956 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Wed, 13 Sep 2023 21:08:43 +0200 Subject: [PATCH 07/10] document tip option as an options object --- docs/features/marks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/marks.md b/docs/features/marks.md index 927fcbd3f8..99f805f0a6 100644 --- a/docs/features/marks.md +++ b/docs/features/marks.md @@ -490,7 +490,7 @@ All marks support the following style options: If the **clip** option is *frame* (or equivalently true), the mark is clipped to the frame’s dimensions; if the **clip** option is null (or equivalently false), the mark is not clipped. If the **clip** option is *sphere*, then a [geographic projection](./projections.md) is required and the mark will be clipped to the projected sphere (_e.g._, the front hemisphere when using the orthographic projection). -If the **tip** option is true, a [tip mark](../marks/tip.md) with the [pointer transform](../interactions/pointer.md) will be derived from this mark and placed atop all other marks, offering details on demand. If the **tip** option is set to *x*, *y*, or *xy*, [pointerX](../interactions/pointer.md#pointerX), [pointerY](../interactions/pointer.md#pointerY), or [pointer](../interactions/pointer.md#pointer) will be used, respectively; otherwise the pointing mode will be chosen automatically. (If the **tip** mark option is truthy, the **title** channel is no longer applied using an SVG title element as this would conflict with the tip mark.) +If the **tip** option is true, a [tip mark](../marks/tip.md) with the [pointer transform](../interactions/pointer.md) will be derived from this mark and placed atop all other marks, offering details on demand. If the **tip** option is set to an options object, these options will be passed to the derived tip mark. If the **tip** option (or, if an object, its **pointer** option) is set to *x*, *y*, or *xy*, [pointerX](../interactions/pointer.md#pointerX), [pointerY](../interactions/pointer.md#pointerY), or [pointer](../interactions/pointer.md#pointer) will be used, respectively; otherwise the pointing mode will be chosen automatically. (If the **tip** mark option is truthy, the **title** channel is no longer applied using an SVG title element as this would conflict with the tip mark.) For all marks except [text](../marks/text.md), the **dx** and **dy** options are rendered as a transform property, possibly including a 0.5px offset on low-density screens. From b5d03dceb28b9ee93f9030f234daf08e6300a9ff Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 15 Sep 2023 19:35:47 -0700 Subject: [PATCH 08/10] edits --- CHANGELOG.md | 56 +++++++++++++++++++---------------------------- docs/marks/tip.md | 6 ++--- src/channel.d.ts | 3 ++- 3 files changed, 27 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5117619fe0..710dbe673d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ Year: **Current (2023)** · [2022](./CHANGELOG-2022.md) · [2021](./CHANGELOG-20 [Released September TK, 2023.](https://github.com/observablehq/plot/releases/tag/v0.6.11) -The new **format** option enables a custom order and formatting of the channels in the [tip mark](https://observablehq.com/plot/marks/tip). +The **tip** mark option can now pass options to the derived [tip mark](https://observablehq.com/plot/marks/tip); the options object can also specify the **pointer** option to control the derived tip’s pointer mode (_x_, _y_, or _xy_). The new **format** tip mark option enables greater control over order and formatting of channels. A tip with a custom order and formatting of the channel values. @@ -22,51 +22,41 @@ Plot.dot(olympians, { }, tip: { format: { - name: true, - y: (d) => `${d}m`, - x: (d) => `${d}kg`, - stroke: false + name: true, // show name first + y: (d) => `${d}m`, // units in meters + x: (d) => `${d}kg`, // units in kilograms + stroke: false // suppress stroke channel } } }).plot() ``` -The **tip** mark option can now be specified as an options object to pass to the derived tip mark, as the example above demonstrates. A new **pointer** option allows to control which pointer mode is used (_x_, _y_, or _xy_, for pointerX, pointerY, or pointer respectively). - -Ordinal axes generated from a temporal or quantitative scale now generalize their scale’s **interval** (if specified), resulting in more readable ticks. For instance, a bar chart with daily values now sports a multi-line axis with, say, a label every week, or month, or quarter… depending on the scale’s domain. +Axes for ordinal scales now generalize the scale’s temporal or quantitative **interval** if any, resulting in more readable ticks. For instance, the bar chart below of monthly values now sports multi-line tick labels. A temporal bar chart with a multi-line axis. ```js -Plot.barY(aapl, Plot.groupX({y: "median"}, {x: "Date", y: "Close"})) - .plot({x: {interval: "month"}}) +Plot.plot({ + x: {interval: "month"}, + marks: [ + Plot.barY(aapl, Plot.groupX({y: "median"}, {x: "Date", y: "Close"})) + ] +}) ``` -The **fontVariant** option is now passed to the axis label, not only to the tick labels. - -A channel can now be specified as an object with a **value** and a **label**. - -The render API now exposes the instantiated scales descriptors in its scales argument, opening the door to richer developments. - -Colors expressed with the [CSS Color Module Level 5](https://www.w3.org/TR/css-color-5/) syntax are now recognized as literal values. This allows to use CSS expressions (such as `var(--red)`), wide gamut colors such as this vivid orange `color(display-p3 1 0.5 0)`, and more as browser support improves. - -On exposed ordinal scales, the domain is now deduplicated. - -Fix the **interval** option in the bin transform to reduce not only *x* but also *x1* and *x2* (and likewise for *y1* and *y2*). - -Fix the stack transform when using the **facet**: exclude option. - -The tip mark now hides the temporary tip before computing its callout, avoiding flickering in some interactive use cases. - -Fix a bug where empty bins generated undefined colors — they now fall back on the first element of their group. - -Fix a bug where the symbol set hint was ignored if fill was specified as a constant currentColor. - -Fix the tree transform when using a custom delimiter. +Plot now recognizes CSS Color Module [Level 4](https://www.w3.org/TR/css-color-4/) and [Level 5](https://www.w3.org/TR/css-color-5/) syntax as literal colors, making it easier to use modern color syntax such as [oklab()](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/oklab), [color-mix()](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix), and alternative color spaces such as [display-p3](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color). -Image tests are now more reliable across platforms. Test coverage reports are now easier to generate (see [Contributing](https://github.com/observablehq/plot/blob/main/CONTRIBUTING.md#testing)). +A channel value can now be given a label by specifying it as a {value, label} object; this may affect the label used in axes, legends, and tips. -The [documentation website](https//observablehq.com/plot/) now has a stylish hexagonal grid of examples on the home page. +This release also includes numerous bug fixes: +- exposed ordinal domains are now correctly deduplicated; +- the default symbol set is now inferred correctly when **fill** is *currentColor*; +- the **fontVariant** axis option now applies to the axis label in addition to ticks; +- the tip mark is no longer briefly visible before asynchronous rendering; +- the bin transform no longer generates undefined colors for empty bins; +- the bin transform now uses the **interval** option to reduce *x1* & *x2* (and *y1* & *y2*); +- the stack transform now correctly handles the *exclude* **facet** option; +- the tree transform now correctly handles escaping with the **delimiter** option. ## 0.6.10 diff --git a/docs/marks/tip.md b/docs/marks/tip.md index c1f5ad4f89..be8cf4c4b1 100644 --- a/docs/marks/tip.md +++ b/docs/marks/tip.md @@ -129,11 +129,9 @@ Plot.rectY(olympians, Plot.binX({y: "sum"}, {x: "weight", y: (d) => d.sex === "m ``` ::: -The order of channels in the tip and the formatting of their values can be customized with the **format** option , which accepts a key-value object mapping channel names to formats. +The order and formatting of channels in the tip can be customized with the **format** option , which accepts a key-value object mapping channel names to formats. Each [format](../features/formats.md) can be a string (for number or time formats), a function that receives the value as input and returns a string, true to use the default format, and null or false to suppress. The order of channels in the tip follows their order in the format object followed by any additional channels. -Each [format](https://observablehq.com/plot/features/formats) can be a string (to format numbers or dates with the respective number or time format), a function that receives the value as input and returns a string, true to use the default format, and null or false to suppress. - -The order of channels in the tip follows their order in the format object. Channels that are not listed in the format object are appended. The name of the channel comes from the scale’s label, if any, or from the channel’s **label** if it is specified as an object with a **value** property, or by its name in the **channels** option, or, lastly, by its default name (such as *x*). +A channel’s label can be specified alongside its value as a {value, label} object; if a channel label is not specified, the associated scale’s label is used, if any; if there is no associated scale, or if the scale has no label, the channel name is used instead. :::plot defer ```js diff --git a/src/channel.d.ts b/src/channel.d.ts index 51819817a6..a45a191a6f 100644 --- a/src/channel.d.ts +++ b/src/channel.d.ts @@ -56,7 +56,8 @@ export type ChannelName = | "y" | "y1" | "y2" - | "z"; + | "z" + | (string & Record); // custom channel; see also https://github.com/microsoft/TypeScript/issues/29729 /** * An object literal of channel definitions. This is also used to represent From 1097d12651410482cabd26cbaf93736f4f6e55ed Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Fri, 15 Sep 2023 19:37:01 -0700 Subject: [PATCH 09/10] 0.6.11 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 839bc01bf3..efb33b6b36 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@observablehq/plot", "description": "A JavaScript library for exploratory data visualization.", - "version": "0.6.10", + "version": "0.6.11", "author": { "name": "Observable, Inc.", "url": "https://observablehq.com" From 98bbc9a1ef394a45fccc59afb1f89fb5c59f8109 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Wed, 20 Sep 2023 09:14:48 -0700 Subject: [PATCH 10/10] Update CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 710dbe673d..9b0b90fd94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ Year: **Current (2023)** · [2022](./CHANGELOG-2022.md) · [2021](./CHANGELOG-20 ## 0.6.11 -[Released September TK, 2023.](https://github.com/observablehq/plot/releases/tag/v0.6.11) +[Released September 20, 2023.](https://github.com/observablehq/plot/releases/tag/v0.6.11) The **tip** mark option can now pass options to the derived [tip mark](https://observablehq.com/plot/marks/tip); the options object can also specify the **pointer** option to control the derived tip’s pointer mode (_x_, _y_, or _xy_). The new **format** tip mark option enables greater control over order and formatting of channels.