All,

I have been looking at some of the recent z-order changes and have found an 
issue that breaks previous behavior.  Previously when
items were added to a Figure or an Axes with the same z-order value, they were 
rendered in order of when they were added, so that
the first one added is 'underneath' the others and the last one added is 
rendered 'over' all the other items of the same z-order
value.  This no longer is the case.  The following snippet of code demonstrates 
the problem:

#===============================================================
class ZSortClass( object ):
   def __init__( self, name, zorder = 0 ):
      self.name = name
      self.zorder = zorder
   def doit( self ):
      print "z-order [%s] = %s" % (self.name, self.zorder)

# Instantiate out of order to prove a point
a = ZSortClass( 'a', 0 )
c = ZSortClass( 'c', 0 )
b = ZSortClass( 'b', 0 )

all = [ a, b, c ]
dsu = [ (x.zorder, x.doit, x.name) for x in all ]

print dsu
dsu.sort()
print dsu
#===============================================================

All three instances have the same 'zorder' value, which causes the sort command 
to resort to sorting on the memory address.  This
can change from run to run.  In simple cases the memory addresses typically 
increase in order of instantiation, but in larger blocks
of code, python can perform garbage collection at any time and this would no 
longer hold true, and cause the effect to appear random
(This is also affecting the rendering of filled continents in basemap).  I 
couldn't think of an easy solution without making some
intrusive changes to what is already in place, so I thought that I'd post my 
findings for further discussion.

--James Evans


------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to