I completely understand how hard z sorting can be. However, I think the orthogonal planes that compose the parallel boxes is a pretty constrained problem that does not require a general solution. I might be able to lend a hand if I had some pointers where to get started in the mplot3d library.
Thanks, -Ben -----Original Message----- From: Reinier Heeres [mailto:rein...@heeres.eu] Sent: Wednesday, February 03, 2010 6:10 PM To: Ben Axelrod; pierre-yves.debr...@bnpparibas.com; ben.r...@ou.edu Cc: matplotlib-users@lists.sourceforge.net Subject: Re: [Matplotlib-users] re ndering bug in bar3d Hi, Unfortunately z-sorting the polygons is a really hard problem. Or in fact, in the way it is currently implemented, an unsolvable problem. Please remember that mplot3d is not a full-blown 3d engine. Fixing this would require either a z-buffer or things such as BSP trees, which I do not think are feasible to implement. However, I do believe that there might be a small bug lurking somewhere or some other slight improvements to be made. I'll try to look into it after my 2 week holiday. Regards, Reinier On Thu, Jan 28, 2010 at 8:42 PM, baxelrod <baxel...@coroware.com> wrote: > > I am also seeing this behavior and it is unfortunately holding my > project back. > > I have seen it with python 2.6 on Debian Linux and Windows XP. I have > seen it in version 0.99.1 and the latest SVN tree (as of yesterday). > > I want to highlight a portion of each 3d bar with another color. This > image shows what I want to do: > http://old.nabble.com/file/p27358778/bar3d-1.png > (http://www.benaxelrod.com/temp/bar3d-1.png) > > But rotating the view leads to rendering issues: > http://old.nabble.com/file/p27358778/bar3d-2.png > (http://www.benaxelrod.com/temp/bar3d-2.png) > > http://old.nabble.com/file/p27358778/bar3d-3.png > (http://www.benaxelrod.com/temp/bar3d-3.png) > > In this example, the bars are drawn next to each other. Here is the > source code to generate the images: > > # code adapted from: hist3d_demo.py > from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as > plt import numpy as np > > fig = plt.figure() > ax = Axes3D(fig) > x, y = np.random.rand(2, 100) * 4 > hist, xedges, yedges = np.histogram2d(x, y, bins=4) > > elements = (len(xedges) - 1) * (len(yedges) - 1) xpos, ypos = > np.meshgrid(xedges[:-1]+0.25, yedges[:-1]+0.25) > > xpos = xpos.flatten() > ypos = ypos.flatten() > zpos = np.zeros(elements) > > dx = 0.5 * np.ones_like(zpos) > dy = dx.copy() > dz = hist.flatten() > > dx = dx*0.5 > xpos = xpos - dx > > ax.bar3d(xpos, ypos, zpos, dx, dy, dz, color='b') ax.bar3d(xpos+dx, > ypos, zpos, dx, dy, dz, color='r') > > ax.set_xlabel('X') > ax.set_ylabel('Y') > ax.set_zlabel('Z') > > plt.show() > #end code > > I also tried to overlap the bars, but the result was even worse > because from certain angles one of the colors was not visible at all. > > I thought that the issue might be due to calling bar3d muliple times. > So I tried passing in an array of collors to bar3d with no luck. It > seems that bar3d only takes a single color. Is this planned to be > fixed so that > bar3d() can take a color array just like bar()? > > Also note that even very simple examples demonstrate the bug. For example: > http://old.nabble.com/file/p27358778/bar3d-4.png > (http://www.benaxelrod.com/temp/bar3d-4.png) > > http://old.nabble.com/file/p27358778/bar3d-5.png > (http://www.benaxelrod.com/temp/bar3d-5.png) > > Thanks, > -Ben > > > pierre-yves.debrito wrote: >> >> Hi, >> I am currently using this version : matplotlib-0.99.1.win32-py2.6.exe >> When I draw several Axes3D.bar3d in the same figure, as in this >> example, the faces are not drawn in the correct order. >> Did I do something wrong or is it a rendering bug? >> Is there a workaround? >> >> Thanks >> Pierre-Yves de Brito >> >> >> >> >> >> from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as >> plt from numpy import array, arange >> >> >> contrib=[[0.18263,0.19098,0.16815,0.16295,0.09372,0.10505,0.15934], >> [0.00769,0.01315,0.01668,0.01645,0.03536,0.03493,0.00599], >> [0.47109,0.43646,0.43171,0.41794,0.14761,0.09472,0.21969], >> [0.25633,0.28820,0.34066,0.37184,0.68048,0.72773,0.57749], >> [0.06492,0.05539,0.03205,0.02151,0.03357,0.02411,0.01512]] >> >> print contrib[0] >> N = 7 >> ind = arange(N) # the x locations for the groups width = 0.1 >> # the width of the bars: can also be len(x) sequence >> >> >> I = array([1,1,1,1,1,1,1]) >> >> fig = plt.figure() >> ax = Axes3D(fig) >> >> for i in range(1,7): >> ax.bar3d(ind[i], 0, 0, 0.1, 0.1, contrib[0][i], color='b') >> ax.bar3d(array(ind[i])+0.15, 0, 0, 0.1, 0.1, contrib[1][i], color='r' >> ) >> ax.bar3d(array(ind[i])+2*0.15, 0, 0, 0.1, 0.1, contrib[2][i], >> color= >> 'g') >> ax.bar3d(array(ind[i])+3*0.15, 0, 0, 0.1, 0.1, contrib[3][i], >> color= >> 'c') >> ax.bar3d(array(ind[i])+4*0.15, 0, 0, 0.1, 0.1, contrib[4][i], >> color= >> 'm') >> >> plt.show() >> >> >> >> >> This message and any attachments (the "message") is intended solely >> for the addressees and is confidential. >> If you receive this message in error, please delete it and >> immediately notify the sender. Any use not in accord with its >> purpose, any dissemination or disclosure, either whole or partial, is >> prohibited except formal approval. The internet can not guarantee the >> integrity of this message. >> BNP PARIBAS (and its subsidiaries) shall (will) not therefore be >> liable for the message if modified. >> Do not print this message unless it is necessary, consider the >> environment. >> >> --------------------------------------------- >> >> Ce message et toutes les pieces jointes (ci-apres le >> "message") sont etablis a l'intention exclusive de ses destinataires >> et sont confidentiels. Si vous recevez ce message par erreur, merci >> de le detruire et d'en avertir immediatement l'expediteur. Toute >> utilisation de ce message non conforme a sa destination, toute >> diffusion ou toute publication, totale ou partielle, est interdite, >> sauf autorisation expresse. L'internet ne permettant pas d'assurer >> l'integrite de ce message, BNP PARIBAS (et ses >> filiales) decline(nt) toute responsabilite au titre de ce message, >> dans l'hypothese ou il aurait ete modifie. >> N'imprimez ce message que si necessaire, pensez a l'environnement. >> >> >> >> --------------------------------------------------------------------- >> --------- Let Crystal Reports handle the reporting - Free Crystal >> Reports 2008 30-Day trial. Simplify your report design, integration >> and deployment - and focus on what you do best, core application >> coding. Discover what's new with Crystal Reports now. >> http://p.sf.net/sfu/bobj-july >> _______________________________________________ >> Matplotlib-users mailing list >> Matplotlib-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> >> > > -- > View this message in context: > http://old.nabble.com/rendering-bug-in-bar3d-tp26413625p27358778.html > Sent from the matplotlib - users mailing list archive at Nabble.com. > > > ---------------------------------------------------------------------- > -------- 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 > -- Reinier Heeres Tel: +31 6 10852639 ------------------------------------------------------------------------------ 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