From 294cbc14654acb85320baf0dd9511ad4cedde4bb Mon Sep 17 00:00:00 2001 From: James McClung Date: Thu, 13 Aug 2026 11:33:17 -0400 Subject: [PATCH 1/5] ensure_derived: fix get_derivable_keys --- src/lib/data/ensure_derived.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/data/ensure_derived.py b/src/lib/data/ensure_derived.py index d55e517..66a7dba 100644 --- a/src/lib/data/ensure_derived.py +++ b/src/lib/data/ensure_derived.py @@ -18,7 +18,7 @@ def ensure_derived[D: DataWithAttrs](data: D, key: SubdataKey) -> D: def get_derivable_keys(data: DataWithAttrs) -> list[SubdataKey]: _, prefix = split_prepath(data.metadata.prepath) if isinstance(data, Field): - return list(DERIVED_FIELD_VARIABLES[prefix].keys()) + return list(DERIVED_FIELD_VARIABLES.get(prefix, {}).keys()) elif isinstance(data, List): return list(get_derived_particle_variables(prefix).keys()) else: From 9165c74152f73e02ac3d754604b804598fca85ea Mon Sep 17 00:00:00 2001 From: James McClung Date: Thu, 13 Aug 2026 11:40:51 -0400 Subject: [PATCH 2/5] setup_fig: set figure.suptitle --- src/lib/plotting/setup_fig.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/lib/plotting/setup_fig.py b/src/lib/plotting/setup_fig.py index 4c09120..5bae40f 100644 --- a/src/lib/plotting/setup_fig.py +++ b/src/lib/plotting/setup_fig.py @@ -378,9 +378,10 @@ def setup_data(self): def setup_fig(plot_infos: list[PlotInfo]) -> tuple[Figure, list[Renderer2]]: figure = plt.figure(layout="constrained") - renderers = [] + renderers: list[Renderer2] = [] - for ax, infos in _setup_axes(figure, plot_infos).values(): + loc_to_ax = _setup_axes(figure, plot_infos) + for ax, infos in loc_to_ax.values(): manager: AxesManager if len(infos) == 1: info = infos[0] @@ -407,4 +408,10 @@ def setup_fig(plot_infos: list[PlotInfo]) -> tuple[Figure, list[Renderer2]]: manager.setup() renderers += manager.renderers + # lift labels to title + suptitle_labeler = TreeLabeler(figure.suptitle("").set_text) + for renderer in renderers: + if isinstance(renderer, TreeLabeler): + suptitle_labeler.add_child(renderer) + return figure, renderers From ed385eab8895d59c953b5ffbb9aabcb46f936a6b Mon Sep 17 00:00:00 2001 From: James McClung Date: Fri, 14 Aug 2026 13:17:15 -0400 Subject: [PATCH 3/5] test_plots: +suptitle --- tests/test_plots.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/test_plots.py b/tests/test_plots.py index 0d92386..491c509 100644 --- a/tests/test_plots.py +++ b/tests/test_plots.py @@ -100,6 +100,12 @@ def test_image_and_cuts(): return make_plot("pfd ey_ec --scale symlog#.001 -v t y --copy ey_ec -i y=0 -v t --copy ey_ec -i y=-1 -v t".split()) +@pytest.mark.mpl_image_compare(**MPL_KWARGS) +def test_suptitle(): + """Particle densities for electrons and ions in the same figure.""" + return make_plot("prt.i --bin y z -v y z --with prt.e --bin y z -v y z loc=1,2".split()) + + # --- Cross-dataset plots --- From 7e69be267acffee922cf0d604e0be1fcb1e9b865 Mon Sep 17 00:00:00 2001 From: James McClung Date: Fri, 14 Aug 2026 13:22:43 -0400 Subject: [PATCH 4/5] setup_fig: add and call suptitle conditionally --- src/lib/plotting/setup_fig.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/lib/plotting/setup_fig.py b/src/lib/plotting/setup_fig.py index 5bae40f..2a5f1bf 100644 --- a/src/lib/plotting/setup_fig.py +++ b/src/lib/plotting/setup_fig.py @@ -409,9 +409,12 @@ def setup_fig(plot_infos: list[PlotInfo]) -> tuple[Figure, list[Renderer2]]: renderers += manager.renderers # lift labels to title - suptitle_labeler = TreeLabeler(figure.suptitle("").set_text) - for renderer in renderers: - if isinstance(renderer, TreeLabeler): - suptitle_labeler.add_child(renderer) + if len(loc_to_ax) > 1: + suptitle_labeler = TreeLabeler(figure.suptitle("").set_text) + for renderer in renderers: + if isinstance(renderer, TreeLabeler): + suptitle_labeler.add_child(renderer) + renderers.append(suptitle_labeler) + suptitle_labeler.update() return figure, renderers From 6c8261a12c525d793ffb5fb3a5a68fce855c2aa4 Mon Sep 17 00:00:00 2001 From: James McClung Date: Fri, 14 Aug 2026 13:23:04 -0400 Subject: [PATCH 5/5] test_plots; *: +test_suptitle --- tests/baseline/test_suptitle.png | Bin 0 -> 26025 bytes tests/test_plots.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 tests/baseline/test_suptitle.png diff --git a/tests/baseline/test_suptitle.png b/tests/baseline/test_suptitle.png new file mode 100644 index 0000000000000000000000000000000000000000..65b4b398a903e03e7e957e5d8b24ea3fb1a3454c GIT binary patch literal 26025 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