[Matplotlib-users] Inner boundaries in tricontourf From: Tijs de Kler - 2011-08-30 17:23 Attachments: debug.py ```Hey Matplotlib users, 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 cut-out. 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? Thanks in advance, Tijs de Kler ```
 Re: [Matplotlib-users] Inner boundaries in tricontourf From: Ian Thomas - 2011-08-31 17:20 Attachments: Message as HTML ```On 30 August 2011 18:23, Tijs de Kler 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 > cut-out. 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#test-whether-a-point-is-inside-a-polygon 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/outer-ness of each boundary from such an algorithm but it would be overkill for what you want to do. Ian Thomas ```