首页 > 解决方案 > 为什么在检查点是否在多边形内时,patch.contains_point() 的行为与 patch.get_path().contains_point() 的行为不同?

问题描述

使用 matplotlib.patches,该patch.contains_point(xy)方法的工作方式似乎与 不同patch.get_path().contains_point(xy),至少在将补丁添加到轴之后。见差异True/TrueTrue/False以下。我找不到任何关于这种差异的文档。有人知道吗?我也很难看到如何contains_point()确定该点是否在路径内,因为在这种情况下路径的顶点是单位矩形,而不是我指定的矩形。

fig, ax = plt.subplots()
rect = patches.Rectangle([0.2, 0.3], 0.8, 0.5)

pnt = [0.4, 0.45] # point inside rect
print("Before adding patch to axes:")
print(rect.get_path().vertices)
print(rect.contains_point(pnt))
print(rect.get_path().contains_point(pnt))

print("After adding patch to axes")
ax.add_patch(rect)
print(rect.get_path().vertices)
print(rect.contains_point(pnt))
print(rect.get_path().contains_point(pnt))

plt.show()

Before adding patch to axes:
[[0. 0.]
 [1. 0.]
 [1. 1.]
 [0. 1.]
 [0. 0.]]
True
True
After adding patch to axes
[[0. 0.]
 [1. 0.]
 [1. 1.]
 [0. 1.]
 [0. 0.]]
False
True

标签: pythonmatplotlibpathpatch

解决方案


推荐阅读