8000 Fix incorrect kwarg being passed to TextPath. by anntzer · Pull Request #13232 · matplotlib/matplotlib · GitHub
[go: up one dir, main page]

Skip to content

Fix incorrect kwarg being passed to TextPath. #13232

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
Jan 21, 2019

Conversation

anntzer
Copy link
Contributor
@anntzer anntzer commented Jan 19, 2019

examples/lines_bars_and_markers/marker_reference.py currently emits

examples/lines_bars_and_markers/marker_reference.py:103: MatplotlibDeprecationWarning: Additional
  ax.plot(y * points, marker=marker, **marker_style)

which is due to _set_mathtext_path passing the unused fontproperties
argument to TextPath (which used to silently ignore it). Actually
there's no need even to pass that argument with the correct name
(prop) because prop=None (the default) results in TextPath subbing
in a fresh FontProperties.

Release critical as Matplotlib tripping over its own DeprecationWarning doesn't look very good.

PR Summary

PR Checklist

  • Has Pytest style unit tests
  • Code is Flake 8 compliant
  • New features are documented, with examples if plot related
  • Documentation is sphinx and numpydoc compliant
  • Added an entry to doc/users/next_whats_new/ if major new feature (follow instructions in README.rst there)
  • Documented in doc/api/api_changes.rst if API changed in a backward-incompatible way

`examples/lines_bars_and_markers/marker_reference.py` currently emits
```
examples/lines_bars_and_markers/marker_reference.py:103: MatplotlibDeprecationWarning: Additional
  ax.plot(y * points, marker=marker, **marker_style)
```
which is due to `_set_mathtext_path` passing the unused `fontproperties`
argument to `TextPath` (which used to silently ignore it).  Actually
there's no need even to pass that argument with the correct name
(`prop`) because `prop=None` (the default) results in TextPath subbing
in a fresh `FontProperties`.
@anntzer anntzer added the Release critical For bugs that make the library unusable (segfaults, incorrect plots, etc) and major regressions. label Jan 19, 2019
@@ -393,10 +393,7 @@ def _set_mathtext_path(self):

# again, the properties could be initialised just once outside
# this function
# Font size is irrelevant here, it will be rescaled based on
# the drawn size later
props = FontProperties(size=1.0)
Copy link
Member

Choose a reason for hiding this comment

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

The original intention has apparently been to create a text path with size 1 and rescale it later. This was not working because of the incorrect parameter name.

Are we sure that a default FontProperties object, which is using rcParams['font.size'] is the correct way rather than the original fontsize 1?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The proposed fix in this PR matches the previous behavior.
I guess the original intent was to use a font size of 1, but I'm not sure this actually makes sense because good quality fonts should look different at very small sizes (e.g. https://en.wikipedia.org/wiki/Font#Optical_size) and we probably won't end up using the textpath at a size close to 1 (not that I think any mainstream font ships with a specific 1-size design either...).
Having the result depend on the rc value may not be optimal either (which has already been the behavior so far), but so far no one complained...

Copy link
Member

Choose a reason for hiding this comment

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

Just tested, varying rcParams['font.size'] doesn't seem to have an effect. At least not something i can see with the bare eye when switching between two images. Maybe the size is not used after all.

Anyway, this is ok then.

@@ -393,10 +393,7 @@ def _set_mathtext_path(self):

# again, the properties could be initialised just once outside
# this function
# Font size is irrelevant here, it will be rescaled based on
# the drawn size later
props = FontProperties(size=1.0)
Copy link
Member

Choose a reason for hiding this comment

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

Just tested, varying rcParams['font.size'] doesn't seem to have an effect. At least not something i can see with the bare eye when switching between two images. Maybe the size is not used after all.

Anyway, this is ok then.

@dstansby dstansby added this to the v3.1 milestone Jan 21, 2019
Copy link
Contributor
@dopplershift dopplershift left a comment

Choose a reason for hiding this comment

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

Since nobody has complained about the behavior, I think it's good to preserve behavior rather than try to match the intent of the code.

@dopplershift dopplershift merged commit ce9b48c into matplotlib:master Jan 21, 2019
@anntzer anntzer deleted the textpath-kwargs branch January 21, 2019 18:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Release critical For bugs that make the library unusable (segfaults, incorrect plots, etc) and major regressions.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants
0