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