Skip to content

Conversation

@lucasb-eyer
Copy link
Contributor

The js-side of mpld3/mplexporter#74 ; the first two commits belong to other PRs and will disappear upon their merge + this rebase, so only look at the last commit.

A few things were missing:

  • minor ticklabels altogether
  • major tick length setting
  • default tick length was arbitrary - make it same as matplotlib.

This change brings both to parity, and makes sure they remain by using
the same code for handling of most tick-related things, whether major or
minor (except tickNr which only makes sense for major).

After this, ticks and ticklabels have parity with standard matplotlib, I
tested multiple scenarios (automatic vs manual setting and labeling,
linear vs log axis, and similar) and compared against stock matplotlib.

As usual, disclaiming I co-developed this with gpt-5.1-codex. We went
through a lot of iterations here, both machine and me coding to get to this solution.
Here's what it has to say:

  • Export and render minor ticks/grids with the same formatter/length handling as majors, including custom formatter overrides
  • Consolidate tick value/formatter application via a shared helper for both major and minor axes
  • Apply Matplotlib tick lengths to both major and minor ticks; keep minor labels hidden when only positions are set by default
  • Add tests for minor grid/tick export, minor label defaults, and major tick length”

Previously, when manually setting tick positions, the gridlines would
not follow, and instead remain at auto-detection positions, or maybe
some other arbitrary-seeming positions. This fixes it.

Disclaimer: this was co-developed with gpt-5.1-codex, which identified
the issue and proposed the fix, I tested and simplified its code a bit.
The js-side of mpld3/mplexporter#73 and fixes mpld3#527
Also adds some tests for minor-grid.

It seems that the uglify is getting tripped up by `??`, so we should
consider upgrading it, because a little chunk of this code could be
quite a bit less verbose with that.

Anyways, as usual disclaimer about having co-developed this with
gpt-5.1-codex, but also tested and carefully reviewed/cleaned it.

Here's what it has to say:

- carry filtered minor tick values/length into axis props and draw a separate minor grid/tick layer
- streamline axis getGrid tick selection and style passthrough to grids
A few things were missing:
- minor ticklabels altogether
- major tick length setting
- default tick length was arbitrary - make it same as matplotlib.

This change brings both to parity, and makes sure they remain by using
the same code for handling of most tick-related things, whether major or
minor (except tickNr which only makes sense for major).

After this, ticks and ticklabels have parity with standard matplotlib, I
tested multiple scenarios (automatic vs manual setting and labeling,
linear vs log axis, and similar) and compared against stock matplotlib.

As usual, disclaiming I co-developed this with gpt-5.1-codex. We went
through a lot of iterations here, both machine and me coding to get to this solution.
Here's what it has to say:

- Export and render minor ticks/grids with the same formatter/length handling as majors, including custom formatter overrides
- Consolidate tick value/formatter application via a shared helper for both major and minor axes
- Apply Matplotlib tick lengths to both major and minor ticks; keep minor labels hidden when only positions are set by default
- Add tests for minor grid/tick export, minor label defaults, and major tick length”
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.

1 participant