## Re: [Matplotlib-users] Problem (bug?) with mpl_toolkits.mplot3d.Axes3D

 Re: [Matplotlib-users] Problem (bug?) with mpl_toolkits.mplot3d.Axes3D From: Benjamin Root - 2011-01-08 22:49:07 Attachments: Message as HTML ```On Sat, Jan 8, 2011 at 4:07 PM, Daniel Mader < danielstefanmader@...> wrote: > Hello, > > I have a problem with the 3D plotting of PolyCollections with > python-matplotlib-1.0.0 (on openSUSE 11.3 x86_64): > > instead of being correctly stacked as in the example > http://matplotlib.sourceforge.net/examples/mplot3d/polys3d_demo.html, > the plots are weirdly overlapping. The example works OK for me but I > need a PolyCollection in order to plot the results of a couple of FEM > simulations... > > Code is attached which demonstrates the problem. Any help is deeply > appreciated! > > Thanks a million times in advance, > best regards from Salzburg, Austria, > > Daniel > > Daniel, The stacking problem is fairly well known (although not very well documented). However, this is not your bug. I haven't exactly figure out what is wrong, but it appears that a fifth polygon is being drawn or something that is connecting back to the (0, 0) point. If you redefine your polygons a bit, you will see what I mean: vertsQuad = [ [ (0,0), (0,1), (1,1), (1,0) ], [ (4,1), (2,3), (2,2), (3,1)], [ (0,1), (2,3), (2,2), (1,1)], [ (3,0), (3,1), (4,1), (4,0)]] As an additional note, your for-loop later in the code is a bit wrong: zpos = [0, 1, 2, 3, 4] for i in zpos : ... zs = [zpos[i]]*len(vertsQuad) In this case, you are using the values of zpos as both the z-location values *and* as an index back to itself. Try something like this: zpos = [0, 1, 2, 3, 4] for zval in zpos : ... zs = [zval]*len(vertsQuad) That way, the values in zpos can be any numerical value, in any order, and it makes for easier reading. I will look a little bit further for the cause of your problem, but you can at least partly mitigate it by closing your polygon paths (this shouldn't be necessary, but go figure...): vertsQuad = [ [ (0,0), (0,1), (1,1), (1,0), (0,0) ], [ (4,1), (2,3), (2,2), (3,1), (4,1)], [ (0,1), (2,3), (2,2), (1,1), (0,1)], [ (3,0), (3,1), (4,1), (4,0), (3,0)]] I hope this helps! Ben Root ```