-
-
Notifications
You must be signed in to change notification settings - Fork 7.9k
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
Conversation
`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`.
@@ -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) |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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...
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
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.
There was a problem hiding this 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.
examples/lines_bars_and_markers/marker_reference.py
currently emitswhich is due to
_set_mathtext_path
passing the unusedfontproperties
argument to
TextPath
(which used to silently ignore it). Actuallythere's no need even to pass that argument with the correct name
(
prop
) becauseprop=None
(the default) results in TextPath subbingin a fresh
FontProperties
.Release critical as Matplotlib tripping over its own DeprecationWarning doesn't look very good.
PR Summary
PR Checklist