Skip to content

Inline and optimize ContourLabeler.get_label_coords. #19018

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 27, 2020

Conversation

anntzer
Copy link
Contributor

@anntzer anntzer commented Nov 26, 2020

get_label_coords is clearly an internal helper to locate_label; e.g.
the distances parameter needs to be filled in with a very specific
array that's internally computed by locate_label. Inline it, which
also makes clearer the possibility to save some further computation for
locate_label to return a linearized index (the part that was commented
"There must be a more efficient way..."; indeed converting the array to
a list of tuples to get back the index seems pretty inefficient).

Also better document the implementation of get_label_coords (I'm not
actually changing any of the code logic).

PR Summary

PR Checklist

  • Has pytest style unit tests (and pytest passes).
  • Is Flake 8 compliant (run flake8 on changed files to check).
  • New features are documented, with examples if plot related.
  • Documentation is sphinx and numpydoc compliant (the docs should build without error).
  • Conforms to Matplotlib style conventions (install flake8-docstrings and run flake8 --docstring-convention=all).
  • New features have an entry in doc/users/next_whats_new/ (follow instructions in README.rst there).
  • API changes documented in doc/api/next_api_changes/ (follow instructions in README.rst there).

@anntzer anntzer added this to the v3.4.0 milestone Nov 26, 2020
@anntzer anntzer force-pushed the glc branch 2 times, most recently from ff2fe6b to 39d6d98 Compare November 26, 2020 10:44
# If all candidates are `too_close()`, just use the straightest part.
idx = adist[0]
x, y = xx[idx, hbsize], yy[idx, hbsize]
return x, y, hbsize % ctr_size
Copy link
Member

Choose a reason for hiding this comment

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

Is this supposed to not use idx like line 308? It may be adist[0], but that doesn't mean that idx is 0.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

indeed, reordered the logic a bit

`get_label_coords` is clearly an internal helper to `locate_label`; e.g.
the `distances` parameter needs to be filled in with a very specific
array that's internally computed by `locate_label`.  Inline it, which
also makes clearer the possibility to save some further computation for
`locate_label` to return a linearized index (the part that was commented
"There must be a more efficient way..."; indeed converting the array to
a list of tuples to get back the index seems pretty inefficient).

Also better document the implementation of `get_label_coords` (I'm not
actually changing any of the code logic).
@timhoffm timhoffm merged commit d050b21 into matplotlib:master Nov 27, 2020
@anntzer anntzer deleted the glc branch November 28, 2020 12:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants