Skip to content

Add manual text staggering for overlapping labels#618

Draft
cvanelteren wants to merge 6 commits intomainfrom
feat/text-overlap-stagger
Draft

Add manual text staggering for overlapping labels#618
cvanelteren wants to merge 6 commits intomainfrom
feat/text-overlap-stagger

Conversation

@cvanelteren
Copy link
Collaborator

This adds an explicit text-staggering helper for dense figures without changing the default behavior of text placement. Axes.stagger_text() can now offset existing text() and annotate() artists horizontally, vertically, or in two dimensions to reduce overlap, and Figure.stagger_text() applies the same behavior across selected subplots while keeping each subplot independent. The PR also adds targeted regressions for text, annotation, idempotency, and figure-level selection behavior. Closes #617.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an explicit “stagger text” utility to UltraPlot axes (and a figure-level convenience wrapper) to automatically offset overlapping Text/Annotation artists, with tests validating overlap reduction and idempotency.

Changes:

  • Implement Axes.stagger_text(...) to iteratively offset text/annotation artists in display space until their bboxes no longer overlap.
  • Implement Figure.stagger_text(...) to apply axes-level staggering across a figure’s selected subplots.
  • Add unit tests covering vertical/horizontal/both-direction staggering, figure-level defaults, and idempotency.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.

File Description
ultraplot/axes/base.py Adds the core staggering algorithm and helpers on Axes.
ultraplot/figure.py Adds axes selection helper and a figure-level stagger_text wrapper.
ultraplot/tests/test_axes.py Adds tests for axes-level staggering across directions and idempotency.
ultraplot/tests/test_figure.py Adds tests for figure-level staggering across subplots and selection.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

cvanelteren and others added 4 commits March 17, 2026 17:36
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add text staggering for overlapping labels and annotations

2 participants