微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在matplotlib中绘制一组给定点以形成闭合曲线

如何解决在matplotlib中绘制一组给定点以形成闭合曲线

如果您不知道如何设置点(如果建议这样做,则建议您遵循该顺序,这样会更快),您可以从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()

注意,此方法将为您的点创建一个边界框。

解决方法

我有闭合曲线的点坐标(吨),以x递增的顺序排序。

我已经通过matplotlib查看,但找不到任何东西。(也许我的关键字输入有误…?)

我尝试通过以下方式重新格式化数据:

  1. 随机选择一个点,找到其最近的邻居,然后再找到下一个最近的邻居,依此类推。它在有时数据不太一致的边缘失败(最近的邻居可能在曲线的另一侧)。

  2. 为了解决不一致的数据,我尝试检查两个点之间的坡度(被认为是最近的邻居)是否与先前连接的坡度相匹配-失败,原因是我找不到。(在我放弃之前花了很多小时)

  3. 选取x_minimum和x_maximum(以及相应的y坐标)并绘制一条假想线,并在该线的任一侧对点进行排序。-当您的曲线看起来像香蕉时失败。

是否有python软件包/库可以帮助我到达所需的位置?还是可以帮助我提出一些想法,以便更好地对我的数据点进行排序?提前致谢。

编辑:

在我的圆上尝试过ConcaveHull,知道为什么这些线在某些地方重叠吗?

EDIT2: 通过更改@Reblochon Masque在他的回答的注释部分中建议的部分代码来解决问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。