Make FuncFormatter work with non-fixed locator#75
Closed
lucasb-eyer wants to merge 4 commits intompld3:masterfrom
Closed
Make FuncFormatter work with non-fixed locator#75lucasb-eyer wants to merge 4 commits intompld3:masterfrom
lucasb-eyer wants to merge 4 commits intompld3:masterfrom
Conversation
This will allow to render both major and minor gridlines in mpld3, which fixes the following issue: mpld3/mpld3#527 As per usual, disclaimer that I co-developed this with gpt-5.1-codex, having it figure out the issues and give implementation recommendations, with me testing, verifying, and tidying up the code. Here's what it has to say, especially wrt the change in API call: - include minor tick values/length and minor grid style in axis props so minor ticks/grids render in mpld3 - read grid color/linewidth/linestyle from tick kwargs (and rcParams fallback) instead of inspecting gridlines[0], avoiding the get_gridlines(which=…) API that isn’t available on matplotlib 3.10” Rationale for the kw/rc approach: `Axis.get_gridlines()` doesn’t accept `which` on matplotlib 3.10, so probing `gridlines[0]` for minor/major fails. Pulling style from the tick keyword dict (which matplotlib populates with `grid_*` fields when you call `ax.grid(...)`) plus `rcParams` defaults gives the same style without needing `get_gridlines(which=…)`, keeping compatibility and matching user-set grid styles. (I verified, indeed get_gridlines does not allow specifying which ones - seems like an omission in matplotlib API to me)
Minor ticklabels were missing altogether,
The previous fix to make FuncFormatter work, in https://github.com/mpld3/mplexporter/pull/67/files and mpld3/mpld3@e7fa282 had two issues still: 1) the mpl FuncFormatter API also takes the index as second argument, which was missing. 2) it exported `tickvalues` only in the FixedLocator case, so these were missing for non-fixed FuncFormatter and hence the FuncFormatter codepath, which also requires them to be present, was never hit with non-fixed locators. Also add a test, and let tests import `matplotlib` via the backend-setting mechanism, not only `plt`. This fixes both. Again, this was figured out and helped with gpt-codex and my careful review+cleanup. Codex even identified the two original commits I'm linking above :)
bbf3ff0 to
81af9ee
Compare
Member
|
Could you please:
By the way, if it's easier, feel free to combine changes like these by sending one PR containing multiple commits — I can then review the commits separately, and merge everything together. Thank you! |
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Again a note that this is on top of a few previous PRs, so only look at
the last commit, the other ones are duplicates and will disappear upon
merging the other PRs.
The previous fix to make FuncFormatter work, in
https://github.com/mpld3/mplexporter/pull/67/files
and
mpld3/mpld3@e7fa282
had two issues still: 1) the mpl FuncFormatter API also takes the index as
second argument, which was missing. 2) it exported
tickvaluesonly inthe FixedLocator case, so these were missing for non-fixed FuncFormatter
and hence the FuncFormatter codepath, which also requires them to be
present, was never hit with non-fixed locators.
This fixes both. Again, this was figured out and helped with gpt-codex
and my careful review+cleanup. Codex even identified the two original
commits I'm linking above :)