Bug summary
In #24620 it was pointed out that "Also, not passing pad leads to an error, so it should probably be 0. as default rather than None."
This holds for many other classes in the offsetbox module as well.
Code for reproduction
import matplotlib.pyplot as plt
from matplotlib.offsetbox import PaddedBox, AnchoredText
fig, ax = plt.subplots()
at = AnchoredText("foo", 'upper left')
pb = PaddedBox(at, patch_attrs={'facecolor' : 'r'}, draw_frame=True)
ax.add_artist(pb)
fig.show()
Actual outcome
Traceback (most recent call last):
File "C:\Users\Oscar\matplotlib\lib\matplotlib\backends\backend_qt.py", line 454, in _draw_idle
self.draw()
File "C:\Users\Oscar\matplotlib\lib\matplotlib\backends\backend_agg.py", line 400, in draw
self.figure.draw(self.renderer)
File "C:\Users\Oscar\matplotlib\lib\matplotlib\artist.py", line 74, in draw_wrapper
result = draw(artist, renderer, *args, **kwargs)
File "C:\Users\Oscar\matplotlib\lib\matplotlib\artist.py", line 51, in draw_wrapper
return draw(artist, renderer)
File "C:\Users\Oscar\matplotlib\lib\matplotlib\figure.py", line 3070, in draw
mimage._draw_list_compositing_images(
File "C:\Users\Oscar\matplotlib\lib\matplotlib\image.py", line 131, in _draw_list_compositing_images
a.draw(renderer)
File "C:\Users\Oscar\matplotlib\lib\matplotlib\artist.py", line 51, in draw_wrapper
return draw(artist, renderer)
File "C:\Users\Oscar\matplotlib\lib\matplotlib\axes\_base.py", line 3157, in draw
mimage._draw_list_compositing_images(
File "C:\Users\Oscar\matplotlib\lib\matplotlib\image.py", line 131, in _draw_list_compositing_images
a.draw(renderer)
File "C:\Users\Oscar\matplotlib\lib\matplotlib\offsetbox.py", line 544, in draw
w, h, xdescent, ydescent, offsets = self.get_extent_offsets(renderer)
File "C:\Users\Oscar\matplotlib\lib\matplotlib\offsetbox.py", line 537, in get_extent_offsets
pad = self.pad * dpicor
TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'
Expected outcome
No exception. A sensible default value provided.
Additional information
This seems to hold for many pad parameters, but there are others as well. For example, for the packers, I think all numerical arguments must have a value, although they are listed as optional, so None will be used for computations unless provided.
Operating system
No response
Matplotlib Version
main
Matplotlib Backend
No response
Python version
No response
Jupyter version
No response
Installation
git checkout
Bug summary
In #24620 it was pointed out that "Also, not passing pad leads to an error, so it should probably be 0. as default rather than None."
This holds for many other classes in the
offsetboxmodule as well.Code for reproduction
Actual outcome
Expected outcome
No exception. A sensible default value provided.
Additional information
This seems to hold for many
padparameters, but there are others as well. For example, for the packers, I think all numerical arguments must have a value, although they are listed as optional, soNonewill be used for computations unless provided.Operating system
No response
Matplotlib Version
main
Matplotlib Backend
No response
Python version
No response
Jupyter version
No response
Installation
git checkout