From: Ian Thomas <ianthomas23@gm...>  20110831 17:20:38

On 30 August 2011 18:23, Tijs de Kler <tijs.dekler@...> wrote: > Im trying to use the tricontourf function in matplotlib to reduce the > complexity of an unstructured dataset into contours. > The resulting contours are retrieved from the path by the to_polygon() > function, but i have some trouble distinguishing inner boundaries on the > polygons, while plot.show() clearly doesn't > > Using Matplotlib 1.01, and the attached code, I get one level, consisting > of 2 polygons, where the first is the outer boundary, and the second should > be the inner boundary. > The figure shown by show() correctly displays a square with a inner square > cutout. However i cannot distinguish between inner and outer boundaries in > the list of polygons that to_polygon() returns. > > Is there a trick how the plot functions distinguish inner boundaries? > Calculating for each polygon if it is contained in other polygons will > become complicated with a large number of polygons: As far as i can tell > this would be checking if the starting point of each polygon is contained in > any of the other polygons. Is there a simpler method i missed? > Matplotlib includes a function to determine if a set of points is within a polygon, called points_inside_poly. For an example see http://matplotlib.sourceforge.net/faq/howto_faq.html#testwhetherapointisinsideapolygon That is about as simple as it gets from a user's perspective! Since you ask about tricks in plot functions, no there aren't any. Rendering functions don't explicitly determine if a contour polygon is an inner or outer boundary. Usually a sweep algorithm is performed across all points to construct the triangulation of the polygons as it progresses. You could extract the inner/outerness of each boundary from such an algorithm but it would be overkill for what you want to do. Ian Thomas 