Ash*_*rma 3 python plot matplotlib
我有闭合曲线的点的坐标(吨),以x递增的顺序排序。
当以常规方式绘制时,我得到的结果是:
我已经通过matplotlib查看,但找不到任何东西。(也许我的关键字输入有误...?)
我尝试通过以下方式重新格式化数据:
随机选择一个点,找到其最近的邻居,然后再找到下一个最近的邻居,依此类推。。它在有时数据不太一致的边缘失效(最近的邻居可能在曲线的另一侧)。
为了解决不一致的数据,我尝试检查两个点之间的坡度(被认为是最近的邻居)是否与先前连接的坡度匹配-失败,原因是我找不到。(在我放弃之前花了很多时间)
选取x_minimum和x_maximum(以及相应的y坐标)并绘制一条假想的线,并在该线的任一侧对点进行排序。-当您的曲线看起来像香蕉时失败。
是否有python软件包/库可以帮助我到达所需的位置?还是可以帮助我提出一些想法,以便更好地对我的数据点进行排序?提前致谢。
编辑:
在我的圆上尝试过ConcaveHull,知道为什么这些线在某些地方重叠吗?这是图片:
EDIT2: 通过更改@Reblochon Masque在其答案的注释部分中建议的部分代码,解决了该问题。
如果您不知道如何设置点(如果我建议您遵循该顺序,则速度会更快),可以从scipy 使用凸包:
import matplotlib.pyplot as plt
from scipy.spatial import ConvexHull
# RANDOM DATA
x = np.random.normal(0,1,100)
y = np.random.normal(0,1,100)
xy = np.hstack((x[:,np.newaxis],y[:,np.newaxis]))
# PERFORM CONVEX HULL
hull = ConvexHull(xy)
# PLOT THE RESULTS
plt.scatter(x,y)
plt.plot(x[hull.vertices], y[hull.vertices])
plt.show()
Run Code Online (Sandbox Code Playgroud)
,在上面的示例中结果是这样的:
注意,此方法将为您的点创建一个边界框。