如何解决在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查看,但找不到任何东西。(也许我的关键字输入有误…?)
我尝试通过以下方式重新格式化数据:
-
随机选择一个点,找到其最近的邻居,然后再找到下一个最近的邻居,依此类推。它在有时数据不太一致的边缘失败(最近的邻居可能在曲线的另一侧)。
-
为了解决不一致的数据,我尝试检查两个点之间的坡度(被认为是最近的邻居)是否与先前连接的坡度相匹配-失败,原因是我找不到。(在我放弃之前花了很多小时)
-
选取x_minimum和x_maximum(以及相应的y坐标)并绘制一条假想线,并在该线的任一侧对点进行排序。-当您的曲线看起来像香蕉时失败。
是否有python软件包/库可以帮助我到达所需的位置?还是可以帮助我提出一些想法,以便更好地对我的数据点进行排序?提前致谢。
编辑:
在我的圆上尝试过ConcaveHull,知道为什么这些线在某些地方重叠吗?
EDIT2: 通过更改@Reblochon Masque在他的回答的注释部分中建议的部分代码来解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。