When I tried composing a minimal example it worked fine.
Traceback (most recent call last):
File "/home/guangzhi/anaconda3/envs/cdat2b/lib/python2.7/pdb.py", line 1314, in main
pdb._runscript(mainpyfile)
File "/home/guangzhi/anaconda3/envs/cdat2b/lib/python2.7/pdb.py", line 1233, in _runscript
self.run(statement)
File "/home/guangzhi/anaconda3/envs/cdat2b/lib/python2.7/bdb.py", line 400, in run
exec cmd in globals, locals
File "<string>", line 1, in <module>
File "straighten_analysis_layers.py", line 7, in <module>
'''
File "/home/guangzhi/anaconda3/envs/cdat2b/lib/python2.7/site-packages/matplotlib/figure.py", line 1152, in add_axes
self.sca(a)
File "/home/guangzhi/anaconda3/envs/cdat2b/lib/python2.7/site-packages/matplotlib/figure.py", line 1848, in sca
self._axstack.bubble(a)
File "/home/guangzhi/anaconda3/envs/cdat2b/lib/python2.7/site-packages/matplotlib/figure.py", line 121, in bubble
return Stack.bubble(self, self._entry_from_axes(a))
File "/home/guangzhi/anaconda3/envs/cdat2b/lib/python2.7/site-packages/matplotlib/cbook/__init__.py", line 1239, in bubble
if o not in self._elements:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Uncaught exception. Entering post mortem debugging
(Pdb) print o
((((0.125, -0.09000000000000002, 0.20514705882352943, 0.1),), ()), (25, <matplotlib.axes._axes.Axes object at 0x7efbc85c0310>))
(Pdb) print self._elements
[(((8, 3, 1), ()), (1, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbcaad6cd0>)),
(((8, 3, 4), ()), (2, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc8d79490>)),
(((8, 3, 7), ()), (3, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc8cf7c10>)),
(((8, 3, 10), ()), (4, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc8c766d0>)),
(((8, 3, 13), ()), (5, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc8c50990>)),
(((8, 3, 16), ()), (6, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc8be4c10>)),
(((8, 3, 19), ()), (7, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc8b6c6d0>)),
(((8, 3, 22), ()), (8, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc8aec190>)),
(((8, 3, 2), ()), (9, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc8c3e890>)),
(((8, 3, 5), ()), (10, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc8cd1e50>)),
(((8, 3, 8), ()), (11, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc8a7fb50>)),
(((8, 3, 11), ()), (12, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc8a05610>)),
(((8, 3, 14), ()), (13, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc89820d0>)),
(((8, 3, 17), ()), (14, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc88f4b50>)),
(((8, 3, 20), ()), (15, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc887b610>)),
(((8, 3, 23), ()), (16, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc87f90d0>)),
(((8, 3, 3), ()), (17, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc873f3d0>)),
(((8, 3, 6), ()), (18, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc86f56d0>)),
(((8, 3, 9), ()), (19, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc8673150>)),
(((8, 3, 12), ()), (20, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc873ff90>)),
(((8, 3, 15), ()), (21, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc88d6bd0>)),
(((8, 3, 18), ()), (22, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc89c32d0>)),
(((8, 3, 21), ()), (23, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc8ce7d90>))
, (((8, 3, 24), ()), (24, <matplotlib.axes._subplots.AxesSubplot object at 0x7efbc87560d0>)),
((((0.125, -0.09000000000000002, 0.20514705882352943, 0.1),), ()), (25, <matplotlib.axes._axes.Axes object at 0x7efbc85c0310>))]
(Pdb) self._elements[-1] == o
True
(Pdb) self._elements[-2] == o
*** ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
(Pdb) print
(Pdb)
(Pdb) o in set(self._elements)
True
(Pdb) np.any([np.all(i==o) for i in self._elements])
*** ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Not entirely sure this is the correct way though.
Bug report
Bug summary
This
*** ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()error is raised when executing thebubble()function incbook/__init__.pyfile.Code for reproduction
Unfortunately I'm unable to provide an easy working example to reproduce the issue. I don't know how I ended up in this
bubble()function, the line I wrote that triggered the error is:When I tried composing a minimal example it worked fine.
Actual outcome
Below is the traceback:
I tried examining the
if o not in self._elements:line it stopped at:So it failed to do the equality comparison between
oand elements inself._elements. As shown in the console output,np.any([np.all(i==o) for i in self._elements])doesn't work.I managed to get around this by using:
Similarly for the same line in
remove()in the samecbook/__init__.pyfile.And also for the line
is changed to
Not entirely sure this is the correct way though.
Matplotlib version
print(matplotlib.get_backend())): Qt5AggMatplotlib installed via
conda install matplotlib