From f7387f64de3c1b41d27a45d6e8131f41fa48ac53 Mon Sep 17 00:00:00 2001 From: Sriman Date: Tue, 22 Sep 2026 15:42:35 +0000 Subject: [PATCH 01/19] Collapse an axis's layout slot when its text is switched off MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `xy.x_axis(show=False)` painted a transparent axis and kept its gutter, so a chart with both axes off sat 25 px from the container edge instead of reaching it, and a hidden right-side axis still reserved a flat 54 px. There was no way to get the documented sparkline: `padding=0` does not override a measured gutter and negative padding is rejected. The visibility shorthands compile to transparent paints rather than to a flag, so layout has to ask the paint whether any text will be seen. The SVG and PNG exporters already did — `_axis_text_paint_visible`, whose docstring names the edge-to-edge sparkline as its reason — and the browser did not, so the same chart exported flush (`x=0 width=1088`) and rendered inset (`left=25.5 width=1062.5`). That divergence is the bug. `ChartView` now mirrors that helper for the top, bottom and right gutters and for the measured left one, with the axis title answering to its own paint so `show=False, grid=True` keeps the grid and neither text. The right side needed the exporters too: their gutter was gated on the tick label strategy alone, so fixing only the client would have swapped one divergence for another. Its flat 42/54 width is unchanged and stays deliberate (a right title is pinned plot-relative); only whether it is reserved at all now follows the paint, as on the left. Measured in headless Chromium at a 1088 px container: both axes off 25.5/1062.5 -> 0/1088; right-side axis off 0/1034 -> 0/1088; `show=False, grid=True` 0/1088; ordinary axes unchanged at 25.5/1062.5. --- docs/components/axes.md | 5 +- js/src/50_chartview.ts | 38 +++++- news/+axis-show-collapses-slot.feature.md | 10 ++ python/xy/_svg.py | 6 + spec/api/styling.md | 6 +- tests/test_axis_show_layout.py | 136 ++++++++++++++++++++++ 6 files changed, 193 insertions(+), 8 deletions(-) create mode 100644 news/+axis-show-collapses-slot.feature.md create mode 100644 tests/test_axis_show_layout.py diff --git a/docs/components/axes.md b/docs/components/axes.md index ed1b0b8b..8d4568eb 100644 --- a/docs/components/axes.md +++ b/docs/components/axes.md @@ -212,7 +212,10 @@ xy.x_axis(line=False, ticks=False) # tick labels, no baseline or ticks The switches compile to ordinary axis `style` properties, so they work in HTML, SVG, and native PNG alike, and an explicit `style=` property still wins over a -switch. `text` controls whether axis text is *drawn*; `tick_labels=` supplies +switch. An axis with nothing left to draw also reserves nothing: its tick-label +gutter collapses, on either side, so `show=False` on both axes gives a plot that +reaches the container edge — the sparkline case. A grid survives that, since it +is drawn inside the plot and never needed a gutter. `text` controls whether axis text is *drawn*; `tick_labels=` supplies the label strings. ## Style Axes diff --git a/js/src/50_chartview.ts b/js/src/50_chartview.ts index 2c6df776..b1f61f21 100644 --- a/js/src/50_chartview.ts +++ b/js/src/50_chartview.ts @@ -789,7 +789,7 @@ export class ChartView { const bottomAxes = Object.values(this.axes || {}).filter((axis: any) => axis && String(axis.id || "").startsWith("x") && (this._axisTickLabelSides(axis).includes("bottom") || axis.side !== "top") && - this._axisTickLabelStrategy(axis) !== "none"); + this._axisTickLabelsVisible(axis)); const hasBottomAxis = bottomAxes.length > 0; // A named x axis can own the top edge even when the primary x axis stays // on the bottom. Reserve one shared gutter for every top-side x axis; @@ -798,7 +798,7 @@ export class ChartView { const topAxes = Object.values(this.axes || {}).filter((axis: any) => axis && String(axis.id || "").startsWith("x") && (this._axisTickLabelSides(axis).includes("top") || axis.side === "top") && - this._axisTickLabelStrategy(axis) !== "none"); + this._axisTickLabelsVisible(axis)); const hasTopAxis = topAxes.length > 0; const authoredLeft = pad ? (responsivePad ? Math.min(pad[3], 46) : pad[3]) @@ -843,7 +843,7 @@ export class ChartView { const rightAxes = Object.values(this.axes || {}).filter((axis: any) => axis && String(axis.id || "").startsWith("y") && (this._axisTickLabelSides(axis).includes("right") || axis.side === "right") && - this._axisTickLabelStrategy(axis) !== "none"); + this._axisTickLabelsVisible(axis)); // The vertical colorbar shifts right by this room (see _positionColorbar); // the Python SVG/raster exporters apply the identical 42/54 rule. this._rightAxisRoom = rightAxes.length ? (compact ? 42 : 54) : 0; @@ -1074,10 +1074,13 @@ export class ChartView { let room = 0; for (const axis of Object.values(this.axes || {})) { if (!axis || !String(axis.id || "").startsWith("y")) continue; - const labelsOnLeft = this._axisTickLabelSides(axis).includes("left"); - const titleOnLeft = axis.side !== "right"; + const labelsOnLeft = this._axisTickLabelSides(axis).includes("left") + && this._axisTickLabelsVisible(axis); + // The title is reserved separately from the tick labels, so it answers to + // its own paint: `show=False, grid=True` keeps the grid and neither text. + const titleOnLeft = axis.side !== "right" + && this._axisTextPaintVisible(axis, "label_color", "tick_color"); if (!labelsOnLeft && !titleOnLeft) continue; - if (this._axisTickLabelStrategy(axis) === "none") continue; const size = Math.max( 8, this._axisStyleNumber( @@ -7524,6 +7527,29 @@ export class ChartView { return style && Object.prototype.hasOwnProperty.call(style, key) ? style[key] : undefined; } + // Whether an axis text paint can contribute visible ink. The visibility + // shorthands compile to TRANSPARENT CSS colors rather than to a flag + // (`_axis_visibility_style`, python/xy/components.py), so layout has to ask + // the paint whether anything will be seen — otherwise `show=False` reserves + // a gutter for text nobody can read and cannot produce the documented + // edge-to-edge sparkline. An unknown or browser-only paint stays + // conservative and keeps its room. + // Mirrors `_axis_text_paint_visible` in python/xy/_svg.py, which is why the + // SVG and PNG exporters already collapse this gutter and the browser did not. + _axisTextPaintVisible(axis, key, fallbackKey?) { + let paint = this._axisStyleValue(axis, key); + if (paint === undefined && fallbackKey) paint = this._axisStyleValue(axis, fallbackKey); + if (paint === undefined || paint === null) return true; + return parseColor(this.root, paint, [0, 0, 0, 1])[3] !== 0; + } + + // Whether this axis's tick labels claim gutter room at all: a strategy that + // draws none, or a paint that shows none, claims nothing. + _axisTickLabelsVisible(axis) { + return this._axisTickLabelStrategy(axis) !== "none" + && this._axisTextPaintVisible(axis, "tick_label_color", "tick_color"); + } + _axisGridDash(axis) { const value = String(this._axisStyleValue(axis, "grid_dash") || "solid"); if (value === "dashed") return [6, 4]; diff --git a/news/+axis-show-collapses-slot.feature.md b/news/+axis-show-collapses-slot.feature.md new file mode 100644 index 00000000..078ebf29 --- /dev/null +++ b/news/+axis-show-collapses-slot.feature.md @@ -0,0 +1,10 @@ +`xy.x_axis(show=False)` and `xy.y_axis(show=False)` now collapse the axis's +layout slot instead of painting an invisible axis in a gutter it still +occupies. A chart with both axes switched off reaches the container edge — the +sparkline case the axes docs describe — rather than sitting 25 px in, and a +hidden right-side axis no longer reserves its flat 54 px. The visibility +shorthands compile to transparent paints rather than to a flag, and the browser +was measuring that invisible text back into the gutter; the SVG and PNG +exporters already skipped it on the left, so the same chart exported flush and +rendered inset. Both renderers now ask the same question about the paint, on +both sides. Axes that draw their text reserve exactly the room they did before. diff --git a/python/xy/_svg.py b/python/xy/_svg.py index 7d4301ae..101172fe 100644 --- a/python/xy/_svg.py +++ b/python/xy/_svg.py @@ -2600,6 +2600,12 @@ def layout(spec: dict[str, Any]) -> tuple[int, int, bool, dict[str, float]]: or "right" in _axis_tick_label_sides(axis, is_x=False) ) and _axis_tick_label_strategy(axis) != "none" + # An axis whose text is switched off draws none of what this gutter + # exists to hold, so it claims none of it — the same question the left + # gutter already asks (`_axis_text_paint_visible`). Only the *presence* + # of the reservation answers to the paint; its flat 42/54 width, and + # the plot-relative right title that depends on it, are unchanged. + and _axis_text_paint_visible(axis, "tick_label_color", "tick_color") for axis_id, axis in axes.items() ): # Match ChartView._layout(): one shared right-side gutter contains the diff --git a/spec/api/styling.md b/spec/api/styling.md index 2bbf64c8..305341e9 100644 --- a/spec/api/styling.md +++ b/spec/api/styling.md @@ -432,7 +432,11 @@ Two asymmetries are deliberate, not oversights: plot-relative (`plot-right + 40`) rather than to a canvas inset, so widening only the static exporters' right gutter would move their title away from the browser's. Unusually wide right-side tick labels can therefore still meet - their axis title, in every renderer alike. + their axis title, in every renderer alike. The flat *width* is what this + fixes; whether the gutter is reserved at all still answers to the paint, as + the left gutter does — an axis whose text is switched off holds none of what + the gutter exists for and claims none of it, in the browser and the exporters + alike. - **Only a spec-authored `padding` reaches the browser.** `layout()` is a Python function; a chart rendered live with `padding=None` gets ChartView's own `46/62` default, not the measured floor. The pyplot shim closes that gap on the diff --git a/tests/test_axis_show_layout.py b/tests/test_axis_show_layout.py new file mode 100644 index 00000000..ce85acf7 --- /dev/null +++ b/tests/test_axis_show_layout.py @@ -0,0 +1,136 @@ +"""`show=False` collapses the axis's layout slot (dossier §33, axes docs). + +The visibility shorthands compile to transparent axis paints rather than to a +flag, so layout has to ask the paint whether any text will be seen. The static +exporters already do (`_axis_text_paint_visible`, whose docstring names the +edge-to-edge sparkline as the reason); the browser did not, so the same chart +rendered flush in an SVG and inset in a canvas. These tests pin the two to each +other. + +Browser probes drive the real client; they skip (never fail) without Chromium, +like the repo's others. +""" + +from __future__ import annotations + +import os +import re +import sys +import tempfile +from pathlib import Path + +import pytest + +from conftest import probe_document, run_browser_probe + +ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(ROOT / "python")) + +import xy # noqa: E402 +from xy.export import find_chromium # noqa: E402 + +WIDTH = 1088 +HEIGHT = 200 +PADDING = (8, 0, 28, 0) + + +def _chart(**axes): + """The reported repro: a line with both axes switched off, no padding to + spare, and a fluid width so the plot can reach the container edge.""" + return xy.line_chart( + xy.line([0.0, 1.0], [0.0, 1.0]), + xy.x_axis(**axes.get("x", {})), + xy.y_axis(**axes.get("y", {})), + width=WIDTH, + height=HEIGHT, + padding=PADDING, + ) + + +def _svg_plot_rect(chart) -> tuple[float, float]: + """The exporter's plot rect, read from the clip path it draws marks into.""" + svg = chart.to_svg() + match = re.search(r"]*>\s*", svg) + assert match is not None, "SVG clip path shape changed; update this helper" + attrs = dict(re.findall(r'(\w+)="([^"]*)"', match.group(1))) + return float(attrs["x"]), float(attrs["width"]) + + +def test_export_collapses_the_slot_for_show_false() -> None: + """The contract the exporters already keep: nothing drawn, nothing + reserved, on either side.""" + assert _svg_plot_rect(_chart(x={"show": False}, y={"show": False})) == (0.0, WIDTH) + flush_right = _chart(x={"show": False}, y={"show": False, "side": "right"}) + assert _svg_plot_rect(flush_right) == (0.0, WIDTH) + # A grid needs no gutter, so `show=False, grid=True` is flush as well. + grid_only = _chart(x={"show": False}, y={"show": False, "grid": True}) + assert _svg_plot_rect(grid_only) == (0.0, WIDTH) + # An axis that draws its labels still reserves its room. + x0, w = _svg_plot_rect(_chart()) + assert x0 > 0 and w < WIDTH, (x0, w) + + +_PLOT_RECT_PROBE = """ + +""" + + +def _browser_plot_rect(chart, label: str) -> tuple[float, float]: + chromium = find_chromium() + if not chromium: + # `run_browser_probe` turns an unlaunchable browser into a failure under + # XY_REQUIRE_BROWSER; skipping before that call would slip past it. + if os.environ.get("XY_REQUIRE_BROWSER"): + pytest.fail(f"{label}: XY_REQUIRE_BROWSER is set but no chromium was found") + pytest.skip(f"no chromium available for the {label} probe") + document = probe_document(chart, _PLOT_RECT_PROBE) + with tempfile.TemporaryDirectory() as td: + payload = run_browser_probe( + chromium, document, Path(td) / "axis.html", "data-xy-plotrect", label=label + ) + return round(float(payload["x"]), 1), round(float(payload["w"]), 1) + + +def test_browser_show_false_reaches_the_edge_like_the_export() -> None: + """The divergence this fixes: the browser reserved a gutter for text the + shorthands had already made invisible, so a chart that exported flush + rendered inset. Both sides now answer the same question about the paint.""" + off = {"show": False} + assert _browser_plot_rect(_chart(x=off, y=off), "axes off") == (0.0, float(WIDTH)) + + # The right side was the worse case: a flat 54 px reservation that no style + # zeroing could reach. + right = _chart(x=off, y={"show": False, "side": "right"}) + assert _browser_plot_rect(right, "right axis off") == (0.0, float(WIDTH)) + + # `show=False, grid=True` keeps the grid and still claims no gutter. + grid = _chart(x=off, y={"show": False, "grid": True}) + assert _browser_plot_rect(grid, "grid only") == (0.0, float(WIDTH)) + + +def test_browser_visible_axes_keep_their_room() -> None: + """The other half of the contract: an axis whose text is drawn reserves the + room it needs, and the browser agrees with the exporter about how much.""" + chart = _chart() + browser = _browser_plot_rect(chart, "axes on") + assert browser[0] > 0 and browser[1] < WIDTH, browser + export = _svg_plot_rect(chart) + # The two measure text with different engines, so they are close rather + # than identical; a whole gutter's worth of difference is the regression. + assert abs(browser[0] - export[0]) <= 8, (browser, export) + assert abs(browser[1] - export[1]) <= 8, (browser, export) From 1b8798d10d50c83bf505c7b6e203f5c5cd0bf3ae Mon Sep 17 00:00:00 2001 From: Sriman Date: Tue, 22 Sep 2026 15:43:01 +0000 Subject: [PATCH 02/19] Name the news fragment for its PR --- news/{+axis-show-collapses-slot.feature.md => 522.bugfix.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename news/{+axis-show-collapses-slot.feature.md => 522.bugfix.md} (100%) diff --git a/news/+axis-show-collapses-slot.feature.md b/news/522.bugfix.md similarity index 100% rename from news/+axis-show-collapses-slot.feature.md rename to news/522.bugfix.md From 3d9ebb6ded151fd82fa59df91e3ab242f83a66b6 Mon Sep 17 00:00:00 2001 From: Sriman Date: Tue, 22 Sep 2026 16:10:46 +0000 Subject: [PATCH 03/19] Reserve a gutter for a visible axis title, and check parity on every side Review found that gating the gutter on the tick-label paint alone is too coarse: tick labels and the axis title are separate paints, so an opaque title over transparent ticks was drawn into a band that no longer existed. Eligibility now means visible tick labels OR a visible title, in the client and in the exporter's right-side reservation. The left gutter already measured the two separately; this is the same rule for the sides that reserve a flat or measured band instead. Confirmed against the exporter: a right-side axis with a hidden tick scale and an opaque title keeps its 54 px in both renderers again. The parity test compared only the plot's x and width, so a gutter collapsing on one axis and not the other could pass. It reads all four coordinates now and sweeps five axis configurations across both renderers. One divergence is documented rather than pinned, because it predates this change and is unaffected by it: with tick labels off and an opaque title, the exporter reserves a bottom band for that title while the browser measures its bottom room from the tick labels alone and reserves none. Verified identical on `main`. It is a title-measurement gap on the x axis rather than gutter eligibility, so it belongs to its own change. Also adds the browser capture of a full-width sparkline, before and after. --- js/src/50_chartview.ts | 19 +++- python/xy/_svg.py | 14 ++- .../axis-show-sparkline-before-after.png | Bin 0 -> 94256 bytes tests/test_axis_show_layout.py | 84 +++++++++++++++--- 4 files changed, 100 insertions(+), 17 deletions(-) create mode 100644 spec/assets/axis-show-sparkline-before-after.png diff --git a/js/src/50_chartview.ts b/js/src/50_chartview.ts index b1f61f21..7d2d35f4 100644 --- a/js/src/50_chartview.ts +++ b/js/src/50_chartview.ts @@ -789,7 +789,7 @@ export class ChartView { const bottomAxes = Object.values(this.axes || {}).filter((axis: any) => axis && String(axis.id || "").startsWith("x") && (this._axisTickLabelSides(axis).includes("bottom") || axis.side !== "top") && - this._axisTickLabelsVisible(axis)); + this._axisGutterVisible(axis)); const hasBottomAxis = bottomAxes.length > 0; // A named x axis can own the top edge even when the primary x axis stays // on the bottom. Reserve one shared gutter for every top-side x axis; @@ -798,7 +798,7 @@ export class ChartView { const topAxes = Object.values(this.axes || {}).filter((axis: any) => axis && String(axis.id || "").startsWith("x") && (this._axisTickLabelSides(axis).includes("top") || axis.side === "top") && - this._axisTickLabelsVisible(axis)); + this._axisGutterVisible(axis)); const hasTopAxis = topAxes.length > 0; const authoredLeft = pad ? (responsivePad ? Math.min(pad[3], 46) : pad[3]) @@ -843,7 +843,7 @@ export class ChartView { const rightAxes = Object.values(this.axes || {}).filter((axis: any) => axis && String(axis.id || "").startsWith("y") && (this._axisTickLabelSides(axis).includes("right") || axis.side === "right") && - this._axisTickLabelsVisible(axis)); + this._axisGutterVisible(axis)); // The vertical colorbar shifts right by this room (see _positionColorbar); // the Python SVG/raster exporters apply the identical 42/54 rule. this._rightAxisRoom = rightAxes.length ? (compact ? 42 : 54) : 0; @@ -7550,6 +7550,19 @@ export class ChartView { && this._axisTextPaintVisible(axis, "tick_label_color", "tick_color"); } + // Whether this axis claims a gutter at all. Tick labels and the axis title + // are separate paints, so either one being visible reserves the band: with + // transparent ticks and an opaque title, gating on the ticks alone drew the + // title into a gutter that no longer existed — off the canvas for a top or + // bottom axis, over the plot for a right-side one. The left gutter already + // measured the two separately (`_yAxisLeftRoom`); this is the same rule for + // the sides that reserve a flat or measured band instead. + _axisGutterVisible(axis) { + if (this._axisTickLabelsVisible(axis)) return true; + return !!(axis && axis.label) + && this._axisTextPaintVisible(axis, "label_color", "tick_color"); + } + _axisGridDash(axis) { const value = String(this._axisStyleValue(axis, "grid_dash") || "solid"); if (value === "dashed") return [6, 4]; diff --git a/python/xy/_svg.py b/python/xy/_svg.py index 101172fe..b46f222e 100644 --- a/python/xy/_svg.py +++ b/python/xy/_svg.py @@ -2602,10 +2602,16 @@ def layout(spec: dict[str, Any]) -> tuple[int, int, bool, dict[str, float]]: and _axis_tick_label_strategy(axis) != "none" # An axis whose text is switched off draws none of what this gutter # exists to hold, so it claims none of it — the same question the left - # gutter already asks (`_axis_text_paint_visible`). Only the *presence* - # of the reservation answers to the paint; its flat 42/54 width, and - # the plot-relative right title that depends on it, are unchanged. - and _axis_text_paint_visible(axis, "tick_label_color", "tick_color") + # gutter already asks (`_axis_text_paint_visible`). Tick labels and the + # title are separate paints, so either one showing keeps the band: an + # opaque title over transparent ticks would otherwise be drawn into a + # gutter that no longer exists. Only the *presence* of the reservation + # answers to the paint; its flat 42/54 width, and the plot-relative + # right title that depends on it, are unchanged. + and ( + _axis_text_paint_visible(axis, "tick_label_color", "tick_color") + or (axis.get("label") and _axis_text_paint_visible(axis, "label_color", "tick_color")) + ) for axis_id, axis in axes.items() ): # Match ChartView._layout(): one shared right-side gutter contains the diff --git a/spec/assets/axis-show-sparkline-before-after.png b/spec/assets/axis-show-sparkline-before-after.png new file mode 100644 index 0000000000000000000000000000000000000000..17dfde3b1d188e5b1a2d7d8269260297f856587f GIT binary patch literal 94256 zcmd?RWmuH&7d1L2f&wZ6(jWo~(w&2#bV+x2cf(*HBBdZ84I*9A9ZGk1cQ*_%%*=bE zKmA|t`E)*?!^H+6fnZBYyikNdZheP9u9e-o3f@s# zkkW-*fj}f*JXdy)-fQSi(^Uw&rc(qw;MKp=c!#<+i9`C(9xU;F!F?xzI&@6Ql-mT z5+whYHE|~@Tu={PVl(@>IFD30t1r_>Ss?b(PwmNjQJ@r0}C^Zbl z_`A-@(VI~*f~q-rKP|1zIaUZGxA{G}cv;UY19taMhNsUztD%eD%KUqZUnX5gg~@7U zu4XkdCem$o!6EzDyK?XL=fH-v4{4AOB{hcVIz&q=g`@)8K2P)gGM=#wSnh zIKCRcdG@4_J5PSzR8i_8Dr7tQB(R)^BLID))_

@w+FHgZFhk3?*NxY_B8)Flo0B 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%0DH$3`L_C3Th{fb8X9@0 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 tuple[float, float]: - """The exporter's plot rect, read from the clip path it draws marks into.""" +def _svg_plot_rect(chart) -> tuple[float, float, float, float]: + """The exporter's plot rect (x, y, width, height), read from the clip path + it draws marks into. All four, not just the horizontal pair: collapsing a + gutter on one axis while the other renderer keeps it is exactly the class + of divergence this fixes, and it can happen vertically too.""" svg = chart.to_svg() match = re.search(r"]*>\s*", svg) assert match is not None, "SVG clip path shape changed; update this helper" attrs = dict(re.findall(r'(\w+)="([^"]*)"', match.group(1))) - return float(attrs["x"]), float(attrs["width"]) + return tuple(round(float(attrs[k]), 1) for k in ("x", "y", "width", "height")) def test_export_collapses_the_slot_for_show_false() -> None: """The contract the exporters already keep: nothing drawn, nothing reserved, on either side.""" - assert _svg_plot_rect(_chart(x={"show": False}, y={"show": False})) == (0.0, WIDTH) - flush_right = _chart(x={"show": False}, y={"show": False, "side": "right"}) - assert _svg_plot_rect(flush_right) == (0.0, WIDTH) + off = {"show": False} + assert _svg_plot_rect(_chart(x=off, y=off))[:3] == (0.0, PADDING[0], WIDTH) + flush_right = _chart(x=off, y={"show": False, "side": "right"}) + assert flush_right and _svg_plot_rect(flush_right)[2] == WIDTH # A grid needs no gutter, so `show=False, grid=True` is flush as well. - grid_only = _chart(x={"show": False}, y={"show": False, "grid": True}) - assert _svg_plot_rect(grid_only) == (0.0, WIDTH) + grid_only = _chart(x=off, y={"show": False, "grid": True}) + assert _svg_plot_rect(grid_only)[2] == WIDTH # An axis that draws its labels still reserves its room. - x0, w = _svg_plot_rect(_chart()) + x0, _y, w, _h = _svg_plot_rect(_chart()) assert x0 > 0 and w < WIDTH, (x0, w) +def test_an_axis_title_keeps_its_gutter_without_tick_labels() -> None: + """Tick labels and the axis title are separate paints, so either one + showing keeps the band. Gating the whole gutter on the tick labels drew an + opaque title into a gutter that no longer existed — over the plot, for a + right-side axis.""" + titled_right = xy.line_chart( + xy.line([0.0, 1.0], [0.0, 1.0]), + xy.x_axis(show=False), + xy.y_axis(show=False, side="right", label="Value", style={"label_color": "#000000"}), + width=WIDTH, + height=HEIGHT, + padding=(0, 0, 0, 0), + ) + # The title is drawn, so the flat right-side reservation stands. + assert _svg_plot_rect(titled_right)[2] < WIDTH + # With no title to draw, it does not. + untitled_right = xy.line_chart( + xy.line([0.0, 1.0], [0.0, 1.0]), + xy.x_axis(show=False), + xy.y_axis(show=False, side="right"), + width=WIDTH, + height=HEIGHT, + padding=(0, 0, 0, 0), + ) + assert _svg_plot_rect(untitled_right)[2] == WIDTH + + _PLOT_RECT_PROBE = """