SourceForge logo
SourceForge logo
Menu

matplotlib-checkins — Commit notification. DO NOT POST to this list, just subscribe to it.

You can subscribe to this list here.

2007 Jan
Feb
Mar
Apr
May
Jun
Jul
(115)
Aug
(120)
Sep
(137)
Oct
(170)
Nov
(461)
Dec
(263)
2008 Jan
(120)
Feb
(74)
Mar
(35)
Apr
(74)
May
(245)
Jun
(356)
Jul
(240)
Aug
(115)
Sep
(78)
Oct
(225)
Nov
(98)
Dec
(271)
2009 Jan
(132)
Feb
(84)
Mar
(74)
Apr
(56)
May
(90)
Jun
(79)
Jul
(83)
Aug
(296)
Sep
(214)
Oct
(76)
Nov
(82)
Dec
(66)
2010 Jan
(46)
Feb
(58)
Mar
(51)
Apr
(77)
May
(58)
Jun
(126)
Jul
(128)
Aug
(64)
Sep
(50)
Oct
(44)
Nov
(48)
Dec
(54)
2011 Jan
(68)
Feb
(52)
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
(1)
2018 Jan
Feb
Mar
Apr
May
(1)
Jun
Jul
Aug
Sep
Oct
Nov
Dec
S M T W T F S





1
(2)
2
3
(1)
4
(5)
5
(2)
6
(3)
7
(8)
8
(1)
9
10
11
12
(2)
13
(1)
14
(2)
15
16
(3)
17
(11)
18
(5)
19
(5)
20
(2)
21
(2)
22
(6)
23
(1)
24
25
(5)
26
27
(3)
28
(14)
29
(6)
30
31






Showing 1 results of 1

From: <he...@us...> - 2009年05月23日 14:31:19
Revision: 7137
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7137&view=rev
Author: heeres
Date: 2009年05月23日 14:31:14 +0000 (2009年5月23日)
Log Message:
-----------
mplot3d: contourf3d, bar / zordering
Modified Paths:
--------------
 trunk/matplotlib/examples/mplot3d/demo.py
 trunk/matplotlib/lib/mpl_toolkits/mplot3d/art3d.py
 trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py
 trunk/matplotlib/lib/mpl_toolkits/mplot3d/axis3d.py
Modified: trunk/matplotlib/examples/mplot3d/demo.py
===================================================================
--- trunk/matplotlib/examples/mplot3d/demo.py	2009年05月22日 18:43:26 UTC (rev 7136)
+++ trunk/matplotlib/examples/mplot3d/demo.py	2009年05月23日 14:31:14 UTC (rev 7137)
@@ -133,6 +133,6 @@
 test_plot()
 test_polys()
 test_scatter2D()
-# test_bar2D()
+ test_bar2D()
 
 plt.show()
Modified: trunk/matplotlib/lib/mpl_toolkits/mplot3d/art3d.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/mplot3d/art3d.py	2009年05月22日 18:43:26 UTC (rev 7136)
+++ trunk/matplotlib/lib/mpl_toolkits/mplot3d/art3d.py	2009年05月23日 14:31:14 UTC (rev 7137)
@@ -91,12 +91,21 @@
 self._segments3d = segments
 LineCollection.set_segments(self, [])
 
- def draw(self, renderer):
+ def do_3d_projection(self, renderer):
 xyslist = [
 proj3d.proj_trans_points(points, renderer.M) for points in
 self._segments3d]
 segments_2d = [zip(xs,ys) for (xs,ys,zs) in xyslist]
 LineCollection.set_segments(self, segments_2d)
+
+ minz = 1e9
+ for (xs, ys, zs) in xyslist:
+ minz = min(minz, min(zs))
+ return minz
+
+ def draw(self, renderer, project=False):
+ if project:
+ self.do_3d_projection(renderer)
 LineCollection.draw(self, renderer)
 
 def line_collection_2d_to_3d(col, z=0, dir='z'):
@@ -123,13 +132,16 @@
 def get_facecolor(self):
 return self._facecolor2d
 
- def draw(self, renderer):
+ def do_3d_projection(self, renderer):
 s = self._segment3d
 xs, ys, zs = zip(*s)
 vxs,vys,vzs,vis = proj3d.proj_transform_clip(xs,ys,zs, renderer.M)
 self._path2d = mpath.Path(zip(vxs, vys))
 # FIXME: coloring
 self._facecolor2d = self._facecolor3d
+ return min(vzs)
+
+ def draw(self, renderer):
 Patch.draw(self, renderer)
 
 def patch_2d_to_3d(patch, z=0, dir='z'):
@@ -149,7 +161,7 @@
 self._facecolor3d = self.get_facecolor()
 self._edgecolor3d = self.get_edgecolor()
 
- def draw(self, renderer):
+ def do_3d_projection(self, renderer):
 xs,ys,zs = self._offsets3d
 vxs,vys,vzs,vis = proj3d.proj_transform_clip(xs,ys,zs, renderer.M)
 #FIXME: mpl allows us no way to unset the collection alpha value
@@ -157,6 +169,10 @@
 self.set_facecolors(zalpha(self._facecolor3d, vzs))
 self.set_edgecolors(zalpha(self._edgecolor3d, vzs))
 PatchCollection.set_offsets(self, zip(vxs, vys))
+
+ return min(vzs)
+
+ def draw(self, renderer):
 PatchCollection.draw(self, renderer)
 
 def patch_collection_2d_to_3d(col, zs=0, dir='z'):
@@ -185,6 +201,7 @@
 ones = np.ones(len(xs))
 self._vec = np.array([xs,ys,zs,ones])
 self._segis = segis
+ self._sort_zpos = min(zs)
 
 def set_verts(self, verts, closed=True):
 self.get_vector(verts)
@@ -196,28 +213,35 @@
 self._facecolors3d = PolyCollection.get_facecolors(self)
 self._edgecolors3d = self.get_edgecolors()
 
- def get_facecolors(self):
- return self._facecolors2d
- get_facecolor = get_facecolors
-
- def draw(self, renderer):
- txs, tys, tzs, tis = proj3d.proj_transform_vec_clip(self._vec, renderer.M)
- xyslist = [(txs[si:ei], tys[si:ei], tzs[si:ei], tis[si:ei]) \
+ def do_3d_projection(self, renderer):
+ txs, tys, tzs = proj3d.proj_transform_vec(self._vec, renderer.M)
+ xyzlist = [(txs[si:ei], tys[si:ei], tzs[si:ei]) \
 for si, ei in self._segis]
 colors = self._facecolors3d
- #
+
 # if required sort by depth (furthest drawn first)
 if self._zsort:
- z_segments_2d = [(min(zs),max(tis),zip(xs,ys),c) for
- (xs,ys,zs,tis),c in zip(xyslist,colors)]
+ z_segments_2d = [(min(zs),zip(xs,ys),c) for
+ (xs,ys,zs),c in zip(xyzlist,colors)]
 z_segments_2d.sort()
 z_segments_2d.reverse()
 else:
 raise ValueError, "whoops"
- segments_2d = [s for z,i,s,c in z_segments_2d if i]
- colors = [c for z,i,s,c in z_segments_2d if i]
+ segments_2d = [s for z,s,c in z_segments_2d]
+ colors = [c for z,s,c in z_segments_2d]
 PolyCollection.set_verts(self, segments_2d)
 self._facecolors2d = colors
+
+ # Return zorder value
+ zvec = np.array([[0], [0], [self._sort_zpos], [1]])
+ ztrans = proj3d.proj_transform_vec(zvec, renderer.M)
+ return ztrans[2][0]
+
+ def get_facecolors(self):
+ return self._facecolors2d
+ get_facecolor = get_facecolors
+
+ def draw(self, renderer):
 return Collection.draw(self, renderer)
 
 def poly_collection_2d_to_3d(col, zs=None, dir='z'):
Modified: trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py	2009年05月22日 18:43:26 UTC (rev 7136)
+++ trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py	2009年05月23日 14:31:14 UTC (rev 7137)
@@ -86,7 +86,7 @@
 xdw = (0.9/self.dist)
 ydwl = (0.95/self.dist)
 ydw = (0.9/self.dist)
- #
+
 self.set_xlim(-xdwl,xdw)
 self.set_ylim(-ydwl,ydw)
 
@@ -166,6 +166,22 @@
 renderer.eye = self.eye
 renderer.get_axis_position = self.get_axis_position
 
+ # Calculate projection of collections and zorder them
+ zlist = [(col.do_3d_projection(renderer), col) \
+ for col in self.collections]
+ zlist.sort()
+ zlist.reverse()
+ for i, (z, col) in enumerate(zlist):
+ col.zorder = i
+
+ # Calculate projection of patches and zorder them
+ zlist = [(patch.do_3d_projection(renderer), patch) \
+ for patch in self.patches]
+ zlist.sort()
+ zlist.reverse()
+ for i, (z, patch) in enumerate(zlist):
+ patch.zorder = i
+
 self.w_xaxis.draw(renderer)
 self.w_yaxis.draw(renderer)
 self.w_zaxis.draw(renderer)
@@ -179,7 +195,7 @@
 zhigh = tc[0][2]>tc[2][2]
 return xhigh,yhigh,zhigh
 
- def update_datalim(self, xys):
+ def update_datalim(self, xys, **kwargs):
 pass
 
 def update_datalim_numerix(self, x, y):
@@ -293,12 +309,12 @@
 
 # look into the middle of the new coordinates
 R = np.array([0.5,0.5,0.5])
- #
+
 xp = R[0] + np.cos(razim)*np.cos(relev)*self.dist
 yp = R[1] + np.sin(razim)*np.cos(relev)*self.dist
 zp = R[2] + np.sin(relev)*self.dist
 E = np.array((xp, yp, zp))
- #
+
 self.eye = E
 self.vvec = R - E
 self.vvec = self.vvec / proj3d.mod(self.vvec)
@@ -393,7 +409,7 @@
 ldists.sort()
 # nearest edge
 edgei = ldists[0][1]
- #
+
 p0,p1 = edges[edgei]
 
 # scale the z value to match
@@ -403,7 +419,6 @@
 d1 = np.hypot(x1-xd,y1-yd)
 dt = d0+d1
 z = d1/dt * z0 + d0/dt * z1
- #print 'mid', edgei, d0, d1, z0, z1, z
 
 x,y,z = proj3d.inv_transform(xd,yd,z,self.M)
 
@@ -440,8 +455,8 @@
 if self.button_pressed == 1:
 # rotate viewing point
 # get the x and y pixel coords
- if dx == 0 and dy == 0: return
- #
+ if dx == 0 and dy == 0:
+ return
 self.elev = axis3d.norm_angle(self.elev - (dy/h)*180)
 self.azim = axis3d.norm_angle(self.azim - (dx/w)*180)
 self.get_proj()
@@ -450,7 +465,6 @@
 # pan view
 # project xv,yv,zv -> xw,yw,zw
 # pan
- #
 pass
 elif self.button_pressed == 3:
 # zoom view
@@ -469,7 +483,7 @@
 def set_xlabel(self, xlabel, fontdict=None, **kwargs):
 #par = cbook.popd(kwargs, 'par',None)
 #label.set_par(par)
- #
+
 label = self.w_xaxis.get_label()
 label.set_text(xlabel)
 if fontdict is not None: label.update(fontdict)
@@ -524,7 +538,7 @@
 tX,tY,tZ = np.transpose(X), np.transpose(Y), np.transpose(Z)
 rstride = kwargs.pop('rstride', 10)
 cstride = kwargs.pop('cstride', 10)
- #
+
 polys = []
 boxes = []
 for rs in np.arange(0,rows-1,rstride):
@@ -543,7 +557,7 @@
 ps.append(z)
 boxes.append(map(np.array,zip(*corners)))
 polys.append(zip(*ps))
- #
+
 lines = []
 shade = []
 for box in boxes:
@@ -552,7 +566,7 @@
 n = n/proj3d.mod(n)*5
 shade.append(np.dot(n,[-1,-1,0.5]))
 lines.append((box[0],n+box[0]))
- #
+
 color = np.array([0,0,1,1])
 norm = Normalize(min(shade),max(shade))
 colors = [color * (0.5+norm(v)*0.5) for v in shade]
@@ -560,7 +574,7 @@
 polyc = art3d.Poly3DCollection(polys, facecolors=colors, *args, **kwargs)
 polyc._zsort = 1
 self.add_collection(polyc)
- #
+
 self.auto_scale_xyz(X,Y,Z, had_data)
 return polyc
 
@@ -578,11 +592,11 @@
 xlines = [X[i] for i in rii]
 ylines = [Y[i] for i in rii]
 zlines = [Z[i] for i in rii]
- #
+
 txlines = [tX[i] for i in cii]
 tylines = [tY[i] for i in cii]
 tzlines = [tZ[i] for i in cii]
- #
+
 lines = [zip(xl,yl,zl) for xl,yl,zl in zip(xlines,ylines,zlines)]
 lines += [zip(xl,yl,zl) for xl,yl,zl in zip(txlines,tylines,tzlines)]
 linec = self.add_lines(lines, *args, **kwargs)
@@ -614,6 +628,7 @@
 zs = [z1] * (len(linec.get_paths()[0])/2)
 zs += [z2] * (len(linec.get_paths()[0])/2)
 art3d.poly_collection_2d_to_3d(linec, zs)
+
 self.auto_scale_xyz(X,Y,Z, had_data)
 return cset
 
@@ -701,6 +716,7 @@
 
 def bar(self, left, height, z=0, dir='z', *args, **kwargs):
 had_data = self.has_data()
+
 patches = self.wrapped.bar(left, height, *args, **kwargs)
 verts = []
 for p in patches:
@@ -863,6 +879,6 @@
 test_plot()
 test_polys()
 test_scatter2D()
-# test_bar2D()
+ test_bar2D()
 
 pylab.show()
Modified: trunk/matplotlib/lib/mpl_toolkits/mplot3d/axis3d.py
===================================================================
--- trunk/matplotlib/lib/mpl_toolkits/mplot3d/axis3d.py	2009年05月22日 18:43:26 UTC (rev 7136)
+++ trunk/matplotlib/lib/mpl_toolkits/mplot3d/axis3d.py	2009年05月23日 14:31:14 UTC (rev 7137)
@@ -85,7 +85,7 @@
 # data and viewing intervals for this direction
 self.d_interval = d_intervalx
 self.v_interval = v_intervalx
- #
+
 axis.XAxis.__init__(self, axes, *args, **kwargs)
 self.line = lines.Line2D(xdata=(0,0),ydata=(0,0),
 linewidth=0.75,
@@ -248,7 +248,7 @@
 lines = zip(xyz1, xyz0, xyz2)
 self.gridlines.set_segments(lines)
 self.gridlines.set_color([(0.9,0.9,0.9,1)] * len(lines))
- self.gridlines.draw(renderer)
+ self.gridlines.draw(renderer, project=True)
 
 # Draw ticks
 tickdir = info['tickdir']
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

Showing 1 results of 1

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /