Hi all, I'm getting strange errors trying to use the bar3d method in mplot3d (I'm using matplotlib 0.99.0 in Ubuntu 9.10 and Python 2.6). I'm doing something roughly like the example at http://matplotlib.sourceforge.net/examples/mplot3d/hist3d_demo.html I've pasted my sample program below, which has 2 cases: In case 1, you see just what you would expect: 2 rows of bars with increasing size in the y direction. if you uncomment case 2 (for different bar heights), you get the following error:
Traceback (most recent call last): File "/usr/lib/pymodules/python2.6/matplotlib/backends/backend_gtk.py", line 352, in expose_event self._render_figure(self._pixmap, w, h) File "/usr/lib/pymodules/python2.6/matplotlib/backends/backend_gtkagg.py", line 75, in _render_figure FigureCanvasAgg.draw(self) File "/usr/lib/pymodules/python2.6/matplotlib/backends/backend_agg.py", line 314, in draw self.figure.draw(self.renderer) File "/usr/lib/pymodules/python2.6/matplotlib/artist.py", line 46, in draw_wrapper draw(artist, renderer, *kl) File "/usr/lib/pymodules/python2.6/matplotlib/figure.py", line 774, in draw for a in self.axes: a.draw(renderer) File "/usr/lib/pymodules/python2.6/mpl_toolkits/mplot3d/axes3d.py", line 135, in draw for col in self.collections] File "/usr/lib/pymodules/python2.6/mpl_toolkits/mplot3d/art3d.py", line 334, in do_3d_projection z_segments_2d.sort(reverse=True) ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() This error gets thrown any time the 2 bars in the same y position have exactly the same z value: in the sample program the (0,0) value and (0,1) value are both 1 but it works for any of the 4 pairs. The error is particularly confusing. even looking at the source of the sort line in the backtrace, it's not clear where any arrays are being used as truth values. (just compared for the sort). This can be worked around by adding a tiny delta to the z values in one of the rows: it only errors when the corresponding z values match exactly. Am I doing something wrong here? or is this some kind of bug in the drawing code? thanks, -Derek the program: #!/usr/bin/env python2.6 import matplotlib.pyplot as plot import mpl_toolkits.mplot3d import numpy fig2 = plot.figure() ax2 = mpl_toolkits.mplot3d.Axes3D(fig2) xpos = numpy.asarray([0, 1, 2, 4, 0, 1, 2, 4]) ypos = numpy.asarray([0, 0, 0, 0, 1, 1, 1, 1]) zpos = numpy.zeros_like(xpos) dx = 0.05 * numpy.ones_like(zpos) dy = numpy.ones_like(zpos) #case 1 dz = numpy.asarray([1,2,3,4,5,6,7,8]) #case 2 #dz = numpy.asarray([1,2,3,4,1,6,7,8]) ax2.bar3d(ypos, xpos, zpos, dy, dx, dz, color='b') ax2.set_xlabel('X') ax2.set_ylabel('Y') ax2.set_zlabel('Z') plot.show() ------------------------------------------------------------------------------ The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away. http://p.sf.net/sfu/theplanet-com _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users