matplotlib pnpoly示例导致错误

时间:2013-05-09 00:39:55

标签: python matplotlib attributeerror point-in-polygon

我根据以下示例运行了以下代码:

http://matplotlib.org/faq/howto_faq.html#test-whether-a-point-is-inside-a-polygon

我非常感谢你的帮助。谢谢。

>>>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'

2 个答案:

答案 0 :(得分:2)

matplotlib论坛上的用户提供了以下内容,该内容与我测试的一样:

from matplotlib.path import Path
path = Path(polygonVerts)
isInside = path.contains_point(point)

答案 1 :(得分:2)

虽然{@ 1}}已被弃用,但您的错误是由this commit on GitHub中已修复的错误引起的。

错误导致pnpoly使用错误的方法签名代理到pnpoly