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