有没有办法让matplotlib.path.contains_points包含边界点

时间:2017-04-24 23:04:12

标签: python matplotlib

我们有一个命中测试用例,希望也考虑路径实际边界上的点。我们正在使用matplotlib.path.contains_points来集中测试一堆点,它对我们来说非常有效。今天我发现它对边界上的点返回false,在我们的例子中是原点(0,0),它是路径上的一个点。

有没有办法配置函数调用以在边界点上产生True,即包含边界?我只是看到它支持一个独家测试,但根据documentation,还有变换和半径的其他参数,也许它们有一些神奇的数字用于将边界点推送到真的?

  

contains_points(points, transform=None, radius=0.0)返回bool   如果路径包含相应的点,则为True的数组。

     

如果transform不是None,则路径将在之前进行转换   进行测试。

     

radius允许路径稍大或稍小。

1 个答案:

答案 0 :(得分:2)

快速扫描源代码说不。 matplotlib并非真正用于空间操作;它只是因为它是一个具有巨大API表面的旧代码库而对它们有一点支持。

我建议使用 shapely,专门为此类空间操作而构建。如果您使用shapely,则可以利用object.intersects来处理此问题。

您可以将点数转换为pandas.Seriesshapely.Point个对象和多边形(给定一系列坐标)到poly = shapely.Polygon(coordinates)个对象中。然后执行points_that_intersect = points[points.map(lambda p: poly.intersects(p)]

之类的操作