>>>>> "Jordan" == Jordan Dawe <[EMAIL PROTECTED]> writes:

    Jordan> Ok, I have some questions about what the protocol for
    Jordan> patch submission should be, in terms of 'completeness' of
    Jordan> the patch.

    Jordan> I have a patch for the quiver function that is half
    Jordan> done... it has converted the arrows from patches to
    Jordan> linecollections, and it will accept arbitrary X and Y
    Jordan> coordinates for the arrow positions, as suggested by Rob.
    Jordan> Unfortunetly, none of the color functionality is working.
    Jordan> Partly this is because the color functionality of
    Jordan> LineCollection is different from PolyCollection (which
    Jordan> quiver originally used) and partly because I don't
    Jordan> understand how matplotlib sets colors at all.  Should I
    Jordan> submit this half finished patch so that others can have a
    Jordan> chance to improve the color function?  Or should I not
    Jordan> submit until I figure out how color works and fix the
    Jordan> thing?

I don't recommend submitting patches that don't work.  Rather, post
code samples here with questions in the areas you need help.

    Jordan> Furthermore, can LineCollection actually do all the things
    Jordan> that quiver's old color commands demand of it?  I don't
    Jordan> see a place to set a colormap for a LineCollection, but as
    Jordan> I said, I don't understand it very well.

You can create a line collection that is color mappable by deriving
from LineCollection and ScalarMappable.  It will take a little more
work to fully integrate it into the colormappable framework, eg so
colorbars and interactive changing of colormaps works as expected, but
this may be enough to speed you along

This is a good example of how you can extend and specialize the
existing classes if they don't behave like you want them to.


from matplotlib.colors import normalize
from matplotlib.cm import ScalarMappable, jet
from matplotlib.collections import LineCollection

from pylab import figure, show, nx
class LineCollectionSM(LineCollection, ScalarMappable):
    def __init__(self,
                 segments,
                 x,
                 norm,
                 cmap, 
                 # and the other args for LineCollection
                 ):
        LineCollection.__init__(self, segments)
        ScalarMappable.__init__(self, norm, cmap)
        self.set_array(x)
        
    def draw(self, renderer):
        self._colors = self.to_rgba(self.get_array())
        LineCollection.draw(self, renderer)


def random_segment():
    x1, y1, x2, y2 = nx.mlab.rand(4)
    return (x1, y1), (x2, y2)
segments = [random_segment() for i in range(50)]
x = nx.mlab.rand(50)
col = LineCollectionSM(segments, x, normalize(), jet)
fig = figure()
ax = fig.add_subplot(111, xlim=(0,1), ylim=(0,1), autoscale_on=False)
ax.add_collection(col)
show()


-------------------------------------------------------
All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to