On Tue, Jul 27, 2010 at 3:10 PM, <copyrights@...> wrote:
> Hallo Ben Root,
>
> I put together some snippets
>
> #CODE
> import matplotlib.pyplot as plt
> from matplotlib.patches import Circle
> import mpl_toolkits.mplot3d.art3d as art3d
> from mpl_toolkits.mplot3d import Axes3D
> import numpy
> import matplotlib
>
> step = 0.04
> maxval = 1.0
>
> fig = plt.figure()
> ax = Axes3D(fig,aspect='equal')
>
> ri = 0.625
> rj = 1.25
> l = 5
>
> ##CONE
> r = numpy.linspace(rj,rj,6)
> r[0]= numpy.zeros(r[0].shape)
> r[1] *= ri/rj
> r[5] *= ri/rj
> r[3]= numpy.zeros(r[3].shape)
>
> p = numpy.linspace(0,2*numpy.pi,50)
> R,P = numpy.meshgrid(r,p)
>
> X,Y = R*numpy.cos(P),R*numpy.sin(P)
>
> tmp=list()
> for i in range(50):
> tmp.append([0,0,l,l,l,0])
> Z = numpy.array(tmp)
> ax.plot_surface(X, Z,Y, rstride=1, cstride=1, color="b")
>
> ##CIRCLES
> p=Circle((0,0),rj,color="red")
> ax.add_patch(p)
> art3d.patch_2d_to_3d(p, z=l, zdir="y")
>
> p=Circle((0,0),ri,color="red")
> ax.add_patch(p)
> art3d.patch_2d_to_3d(p, z=0, zdir="y")
>
> ax.set_ylim3d(0.5, l+.5)
> ax.set_xlim3d(l*0.50.5, l*0.5+0.5)
> ax.set_zlim3d(l*0.50.5, l*0.5+0.5)
>
> plt.show()
> #CODE
>
> greetz
>
> Frank
> Am 27.07.2010 21:36, schrieb Benjamin Root:
> > On Tue, Jul 27, 2010 at 2:25 PM, <copyrights@...
> > <mailto:copyrights@...>> wrote:
> >
> > Hallo,
> >
> > I got a depth problem with Axes3D. I made a plot_surface and add 2
> > Circle object with add_patch and
> > mpl_toolkits.mplot3d.art3d.patch_2d_to_3d.
> >
> > The problem is that the circles are always in front. I upload a
> > picture here http://yfrog.com/nd3dproblemp . The gui is rotatable,
> > so I can't just remove the second Circle (like I did for the
> > screenshot).
> >
> > How to get right order to the object?
> >
> > greetz
> >
> > Frank
> >
>
Thanks,
At first glance, I am wondering if the problem is that the Circle objects
are not properly getting a zsort value when converted to a 3d object. I
will see if there is an inconsistency in behavior between different types of
patches.
Ben Root
