Sorry, had forgot to reply all:

Thanks Joe, that's perfect.  I appreciate the tip, as I would not have
realized I needed a PathCollection for lines and curves.  PS, do you know
if it is possible to have a background image behind a plot of patches?  I
know it's doable for scatter, but hadn't seen an example for patch plots in
general.

Paul, thanks for you help as well.  I'm actually pretty confident in the
primitives I've chosen.  I was inspired by scikit-image.draw:

http://scikit-image.org/docs/dev/api/skimage.draw.html

Which returns the indicies of an array, such that anytime one ones to draw
the array, they merely pass by index.  For example:

image = np.zeroes( (256, 256) )
rr, cc = draw.circle( center=(128,128), radius=5)
image[rr, cc] = (1, 0, 0)

The code above would generate a red circle.  My library creates primitive
classes that have an rr, cc attribute, with enough metadata to hide
effectively bury this representation.  This can be generated a number of
ways, but the classes take care of all of this, as well as other aspects.
 By keeping only these indicies as primitives, the shapes can be
manipulated and managed outside of any representation (ie the image).  What
I'd like to do is build wrappers to return PatchCollections from my already
storred rr, cc data (and other metadata that is stored).  In this way, I'll
be able to add the very nice patches from matplotlib, but retain the same
api.

The project is called "pyparty" and I'll share it pretty soon with the
scikit image mailing list.  If I am able to get the patches built it, would
anyone mind if I share it with the matplotlib list as well?

Thanks


On Tue, Jan 7, 2014 at 4:10 PM, Joe Kington <joferking...@gmail.com> wrote:

>
>
>
> On Tue, Jan 7, 2014 at 2:29 PM, Adam Hughes <hughesada...@gmail.com>wrote:
>
>> Sorry, quick followup.  I did find the gallery example to plot multiple
>> patches together:
>>
>> http://matplotlib.org/examples/api/patch_collection.html
>>
>> That's excellent.  Now I guess my question is how best to generalize the
>> process of turning my objects into patches.  I think I will just try to
>> keep the geometry (ie line --> mpatch.Line) unless anyone has any better
>> suggestions.
>>
>
> As you've already found out, it sounds like you want a PatchCollection.
>
> There is one catch, though.  Your lines/curves will need to be converted
> to PathPatches (which is trivial), which can then have a facecolor.
> Because all items in a collection will have the same facecolor by default,
> this means that your lines will become "filled" polygons, unless you
> specify otherwise.
>
> Therefore, you'll need to do something like this:
>
> import matplotlib.pyplot as plt
> from matplotlib.path import Path
> import matplotlib.patches as mpatches
> from matplotlib.collections import PatchCollection
>
> # Just a simple line, but it could be a bezier curve, etc.
> line = Path([(-20, -20), (-10, 10), (20, 20)])
>
> # We'll need to convert the line to a PathPatch, and we'll throw in a
> circle, too
> line = mpatches.PathPatch(line)
> circle = mpatches.Circle([0, 0])
>
> # If we don't specify facecolor='none' for the line, it will be filled!
> col = PatchCollection([line, circle], facecolors=['none', 'red'])
>
> fig, ax = plt.subplots()
> ax.add_collection(col)
> ax.autoscale()
> plt.show()
>
> Alternatively, you can just put the lines/curves in a PathCollection and
> the patches/polygons/etc in a PatchCollection.
>
> Hope that helps!
> -Joe
>
>
>>
>> Thanks!
>>
>>
>> On Tue, Jan 7, 2014 at 3:08 PM, Adam Hughes <hughesada...@gmail.com>wrote:
>>
>>> Hi,
>>>
>>> I am working on a library for image analysis which stores particles as
>>> indexed numpy arrays and provides functionality for managing the particles
>>> beyond merely image masking or altering the arrays directly.  I've already
>>> designed classes for many common shapes including Lines/Curves,
>>> Circles/Ellipses, Polygons, Multi-shapes (eg 4 circles with variable
>>> overlap).
>>>
>>> What I'd really LOVE to do would be able to generate a
>>> matplotlib.Collection instance from these objects as generally as possible.
>>>  Then, I'd be able to show data as a masked image, but also get a really
>>> nice looking plot from the objects in their Collection representation.
>>>
>>> So my question really is in the implementation.  First, is there a
>>> general collection object that could work with ANY shape, or am I better
>>> off matching my shape to that collection?  For example:
>>>
>>>     line --> LineCollection       *vs.*    line --> GeneralCollection
>>>     circle --> CircleCollection           circle ---> GeneralCollection
>>>
>>> And then, is the Collections plotting API flexible enough to mix all of
>>> these types together?  Or would I have to settle for only being able to
>>> plot a collection of any 1 shape type at at time?
>>>
>>> I will delve into the API further, but ascertaining this information
>>> would really help me get started.
>>>
>>> Thanks
>>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Rapidly troubleshoot problems before they affect your business. Most IT
>> organizations don't have a clear picture of how application performance
>> affects their revenue. With AppDynamics, you get 100% visibility into your
>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics
>> Pro!
>>
>> http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
>> _______________________________________________
>> Matplotlib-users mailing list
>> Matplotlib-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>
>>
>
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to