From: Virgil Stokes <vs@it...>  20110326 15:16:32

I found that def set_sort_zpos(self,val): '''Set the position to use for zsorting.''' self._sort_zpos = val was missing from class Line3DCollection(LineCollection) (in matplotlib 1.0.1): Now, with the above method added, add_collection3d works as it should with line segments, and the following will work as expected :) ''' Purpose: Waterfall plot using LineCollection Author: V.P.S. (20110326) ''' from mpl_toolkits.mplot3d import Axes3D from matplotlib.collections import LineCollection from matplotlib.colors import colorConverter import matplotlib.pyplot as plt import numpy as np np.random.seed(40040157) # Used to allow repeatable experiments (plots) fig = plt.figure() ax = fig.gca(projection='3d') cc = [colorConverter.to_rgba(c,alpha=0.6) for c in ('r','g','b','c','y','m','k')] ncc = len(cc) nxs = 5 # Num of points to connect (nxs1 line segments) # Generate X values xs = np.arange(1, nxs+1, 1) # Create array of Y values (to be updated) ys = np.zeros(nxs) # Create list of Z values nzs = 4 # Num of Zplanes zs = [zs+1 for zs in range(nzs)] # Create list of colors (cyclic) for lines colorlist = [cc[j%ncc] for j in range(nzs)] segs = [] # Generate line segments in each Zplane for j in zs: ys = np.random.rand(nxs) segs.append(zip(xs, ys)) curves = LineCollection(segs, colors = colorlist) ax.add_collection3d(curves, zs=zs, zdir='y') ax.set_xlabel('X') # points to right  X ax.set_xlim3d(0, nxs+1) ax.set_ylabel('Y') # points into screen  Y ax.set_ylim3d(0, nzs+1) ax.set_zlabel('Z') # points up  Z ax.set_zlim3d(0, 1) plt.show() Have a Good Day V 
From: Benjamin Root <ben.root@ou...>  20110331 16:40:18
Attachments:
Message as HTML

On Sat, Mar 26, 2011 at 10:16 AM, Virgil Stokes <vs@...> wrote: > I found that > > def set_sort_zpos(self,val): > '''Set the position to use for zsorting.''' > self._sort_zpos = val > > was missing from > > class Line3DCollection(LineCollection) (in matplotlib 1.0.1): > > Now, with the above method added, add_collection3d works as it should with > line > segments, and the following will work as expected :) > > ''' > Purpose: Waterfall plot using LineCollection > Author: V.P.S. (20110326) > ''' > from mpl_toolkits.mplot3d import Axes3D > from matplotlib.collections import LineCollection > from matplotlib.colors import colorConverter > import matplotlib.pyplot as plt > import numpy as np > > np.random.seed(40040157) # Used to allow repeatable experiments (plots) > > fig = plt.figure() > ax = fig.gca(projection='3d') > > cc = [colorConverter.to_rgba(c,alpha=0.6) for c in > ('r','g','b','c','y','m','k')] > ncc = len(cc) > > nxs = 5 # Num of points to connect (nxs1 line segments) > # Generate X values > xs = np.arange(1, nxs+1, 1) > > # Create array of Y values (to be updated) > ys = np.zeros(nxs) > > # Create list of Z values > nzs = 4 # Num of Zplanes > zs = [zs+1 for zs in range(nzs)] > > # Create list of colors (cyclic) for lines > colorlist = [cc[j%ncc] for j in range(nzs)] > > segs = [] > # Generate line segments in each Zplane > for j in zs: > ys = np.random.rand(nxs) > segs.append(zip(xs, ys)) > > curves = LineCollection(segs, colors = colorlist) > > ax.add_collection3d(curves, zs=zs, zdir='y') > > ax.set_xlabel('X') # points to right  X > ax.set_xlim3d(0, nxs+1) > ax.set_ylabel('Y') # points into screen  Y > ax.set_ylim3d(0, nzs+1) > ax.set_zlabel('Z') # points up  Z > ax.set_zlim3d(0, 1) > > plt.show() > > Have a Good Day > V > > Virgil, Thanks for noticing this. There are several missing methods in the various 3D collections and artists, and I am sure we haven't found them all yet. I am currently too busy to investigate why this particular one was missing, but in about a month I will have some time to do so. Ben Root 
From: Benjamin Root <ben.root@ou...>  20110511 14:38:12
Attachments:
Message as HTML

On Thu, Mar 31, 2011 at 11:39 AM, Benjamin Root <ben.root@...> wrote: > > > On Sat, Mar 26, 2011 at 10:16 AM, Virgil Stokes <vs@...> wrote: > >> I found that >> >> def set_sort_zpos(self,val): >> '''Set the position to use for zsorting.''' >> self._sort_zpos = val >> >> was missing from >> >> class Line3DCollection(LineCollection) (in matplotlib 1.0.1): >> >> Now, with the above method added, add_collection3d works as it should >> with line >> segments, and the following will work as expected :) >> >> ''' >> Purpose: Waterfall plot using LineCollection >> Author: V.P.S. (20110326) >> ''' >> from mpl_toolkits.mplot3d import Axes3D >> from matplotlib.collections import LineCollection >> from matplotlib.colors import colorConverter >> import matplotlib.pyplot as plt >> import numpy as np >> >> np.random.seed(40040157) # Used to allow repeatable experiments (plots) >> >> fig = plt.figure() >> ax = fig.gca(projection='3d') >> >> cc = [colorConverter.to_rgba(c,alpha=0.6) for c in >> ('r','g','b','c','y','m','k')] >> ncc = len(cc) >> >> nxs = 5 # Num of points to connect (nxs1 line segments) >> # Generate X values >> xs = np.arange(1, nxs+1, 1) >> >> # Create array of Y values (to be updated) >> ys = np.zeros(nxs) >> >> # Create list of Z values >> nzs = 4 # Num of Zplanes >> zs = [zs+1 for zs in range(nzs)] >> >> # Create list of colors (cyclic) for lines >> colorlist = [cc[j%ncc] for j in range(nzs)] >> >> segs = [] >> # Generate line segments in each Zplane >> for j in zs: >> ys = np.random.rand(nxs) >> segs.append(zip(xs, ys)) >> >> curves = LineCollection(segs, colors = colorlist) >> >> ax.add_collection3d(curves, zs=zs, zdir='y') >> >> ax.set_xlabel('X') # points to right  X >> ax.set_xlim3d(0, nxs+1) >> ax.set_ylabel('Y') # points into screen  Y >> ax.set_ylim3d(0, nzs+1) >> ax.set_zlabel('Z') # points up  Z >> ax.set_zlim3d(0, 1) >> >> plt.show() >> >> Have a Good Day >> V >> >> > Virgil, > > Thanks for noticing this. There are several missing methods in the various > 3D collections and artists, and I am sure we haven't found them all yet. I > am currently too busy to investigate why this particular one was missing, > but in about a month I will have some time to do so. > > Ben Root > > Virgil, I have verified your observations, and the patch was added to the master branch. I tried to attribute the patch to you, but I don't think I did it correctly. Thanks, Ben Root 