Closed
Description
Bug summary
From Version 3.10.0, plt.matshow(..., fignum=...)
is broken.
I tested against the last nightly release matplotlib-3.11.0.dev377+g6c5e3f3348, where it is still broken.
Code for reproduction
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
plt.matshow(np.random.random([3, 3]), fignum=fig.number)
Actual outcome
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/wehandre/mambaforge/envs/temptest/lib/python3.12/site-packages/matplotlib/pyplot.py", line 2668, in matshow
fig = figure(fignum, figsize=figaspect(A))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/wehandre/mambaforge/envs/temptest/lib/python3.12/site-packages/matplotlib/pyplot.py", line 1013, in figure
if any([figsize, dpi, facecolor, edgecolor, not frameon,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Expected outcome
No error
Additional information
The issue is, that figsize
is a NumPy array, and thus cannot be used within any
. figsize
is the result of the function matplotlib.figure.figaspect
. To my knowledge, previously, this returned a tuple, which can be evaluated as a boolean. The documentation still suggests that the result is a tuple. However, I don't see any changes to matshow
or figaspect
inspecting their blames.
Operating system
No response
Matplotlib Version
3.10.0
Matplotlib Backend
No response
Python version
3.12.8
Jupyter version
No response
Installation
pip