You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The functions matplotlib.rc and matplotlib.pyplot.rc process settings given as named parameters. Named parameters can't contain hyphens; therefore, it is impossible to set font.sans-serif so because it contains a hyphen.
It is possible to set the parameter by different means, but this seems like the main way, so I consider that it does not work a significant shortcoming. How else this parameter can be set:
>>> from matplotlib import rc
>>> rc("font", sans-serif="Fira Sans")
File "<python-input-1>", line 1
rc("font", sans-serif="Fira Sans")
^^^^^^^^^^^
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
Expected outcome
I think that that the parameter is named font.sans-serif is a mistake, and it should be named something like font.sans_serif with an underscore. It may be too late to change that, but an alias would work. rc already has aliases like lw → linewidth, ls → linestyle, c → color. I expect that there would be an alias like sans → sans-serif so I could use rc("font", sans="Fira Sans").
Additional information
No response
Operating system
No response
Matplotlib Version
3.10.1
Matplotlib Backend
No response
Python version
Python 3.13.3
Jupyter version
No response
Installation
None
The text was updated successfully, but these errors were encountered:
I agree that adding an alias of 'sans': 'sans-serif' is a reasonable feature to add (as is maybe 'sans_serif'). Any interest in working on that @matj1 ?
Changing the name of the rcparam is not something I think is should be on the table. We have carried this name for 21+ years. It is not worth the cost of thrashing all of the users who are setting it one of the other ways to ask them to change their code.
Unfortunately given that this is a syntax error there is no way for us to inject a better error.
It appears we gained the font.sans-serif rcparam in 41f1c49 in April 2004 (it can now drink in the US) where as def rf() first shows up in e34a333 in September 2004 (however due to a glitch in the migration from svn -> git that commit has a lot of code just "appear" so it is not definitive that the key existed before the function).
Personally I reach for mpl.rcParams[...] = ... first and view rc as a helper (as it a wrapper around the calling setitem).
Bug summary
The functions
matplotlib.rc
andmatplotlib.pyplot.rc
process settings given as named parameters. Named parameters can't contain hyphens; therefore, it is impossible to setfont.sans-serif
so because it contains a hyphen.It is possible to set the parameter by different means, but this seems like the main way, so I consider that it does not work a significant shortcoming. How else this parameter can be set:
matplotlib.rcParams["font.sans-serif"] = "Fira Sans"
matplotlib.rc("font", **{"sans-serif": "Fira Sans"})
Code for reproduction
Actual outcome
Expected outcome
I think that that the parameter is named
font.sans-serif
is a mistake, and it should be named something likefont.sans_serif
with an underscore. It may be too late to change that, but an alias would work.rc
already has aliases likelw
→linewidth
,ls
→linestyle
,c
→color
. I expect that there would be an alias likesans
→sans-serif
so I could userc("font", sans="Fira Sans")
.Additional information
No response
Operating system
No response
Matplotlib Version
3.10.1
Matplotlib Backend
No response
Python version
Python 3.13.3
Jupyter version
No response
Installation
None
The text was updated successfully, but these errors were encountered: