当检查点是否在多边形内时,为什么patch.contains_point的行为与patch.get_pathcontains_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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)