>From the matplotlib page, you can reach:
http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
and just translates the function:
def inside_polygon(p, vertices):
vx,vy = vertices[:,0], vertices[:,1]
x,y = p
c = 0
j = len(vertices)-1
for i in xrange(len(vertices)):
if( ((vy[i] > y) != (vy[j] > y)) and (x < (vx[j]-vx[i]) * (y-vy[i]) /
(vy[j]-vy[i]) + vx[i]) ):
c = 1-c
j = i
return c
Of course this would be slower than the corresponding C implementation.
Nicolas
On May 9, 2013, at 21:55 , algotr8der wrote:
> I tried to execute the following code:
>
> http://matplotlib.org/faq/howto_faq.html#test-whether-a-point-is-inside-a-polygon
>
> However I get errors I describe here:
>
> http://stackoverflow.com/questions/16452509/matplotlib-pnpoly-example-results-in-error
>
>>>> import numpy as np
>>>> import matplotlib.nxutils as nx
>>>> verts = np.array([ [0,0], [0, 1], [1, 1], [1,0]], float)
>>>> nx.pnpoly(0.5, 0.5, verts)
>
> Traceback (most recent call last):
> File "<console>", line 1, in <module>
> File "C:\Python27\lib\site-packages\matplotlib\nxutils.py", line 26, in
> pnpoly
> return p.contains_point(x, y)
> File "C:\Python27\lib\site-packages\matplotlib\path.py", line 289, in
> contains_point
> transform = transform.frozen()
> AttributeError: 'float' object has no attribute 'frozen'
>
>>>> nx.pnpoly(0.5, 1.5, verts)
>
> Traceback (most recent call last):
> File "<console>", line 1, in <module>
> File "C:\Python27\lib\site-packages\matplotlib\nxutils.py", line 26, in
> pnpoly
> return p.contains_point(x, y)
> File "C:\Python27\lib\site-packages\matplotlib\path.py", line 289, in
> contains_point
> transform = transform.frozen()
> AttributeError: 'float' object has no attribute 'frozen'
>
> Apparently, nxutils is deprecated, which to me means it should still work
> but a user on stackoverflow pointed out that there may be some code rot.
> That said, the documentation on matplotlib.path.Path.contains_point is weak
> (see below). Does anyone have an example of how I can do the exact same
> thing in the code in the howto_faq but using the suggested function
> (contains_point)?
>
> http://matplotlib.org/1.2.1/api/path_api.html?highlight=contains_point#matplotlib.path.Path.contains_point
>
> contains_point(point, transform=None, radius=0.0)
>
> Returns True if the path contains the given point.
> If transform is not None, the path will be transformed before performing
> the test.
> radius allows the path to be made slightly larger or smaller.
>
> contains_points(points, transform=None, radius=0.0)
>
> Returns a bool array which is True if the path contains the
> corresponding point.
> If transform is not None, the path will be transformed before performing
> the test.
> radius allows the path to be made slightly larger or smaller.
>
>
>
>
>
>
> --
> View this message in context:
> http://matplotlib.1069221.n5.nabble.com/re-matplotlib-pnpoly-example-results-in-error-tp41028.html
> Sent from the matplotlib - users mailing list archive at Nabble.com.
>
> ------------------------------------------------------------------------------
> Learn Graph Databases - Download FREE O'Reilly Book
> "Graph Databases" is the definitive new guide to graph databases and
> their applications. This 200-page book is written by three acclaimed
> leaders in the field. The early access version is available now.
> Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
> _______________________________________________
> Matplotlib-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and
their applications. This 200-page book is written by three acclaimed
leaders in the field. The early access version is available now.
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
Matplotlib-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users