当前位置: 首页 > 面试题库 >

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

沈飞翼
2023-03-14
问题内容

我有闭合曲线的点坐标(吨),以x递增的顺序html" target="_blank">排序。

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

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

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

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

  3. 选取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()

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



 类似资料:
  • 给定一个信号的时间表示图,如何画出相应的时间指标线? 具体来说,给定一个时间索引范围为0到2.6(s)的信号图,我想画垂直红线,指示列表的相应时间索引,我该怎么做?

  • 问题内容: 我有一些外部程序作为XYZ值生成的表面数据。我想使用matplotlib创建以下图形: 表面图 等高线图 等高线图与表面图叠加 我看了几个在matplotlib中绘制表面和轮廓的示例-但是,Z值似乎是X和Y的函数,即Y〜f(X,Y)。 我认为我将需要转换我的Y变量,但是我还没有看到任何显示该操作方法的示例。 因此,我的问题是这样的:给定一组(X,Y,Z)点,如何从该数据生成曲面和轮廓图

  • 问题内容: 给定时间表示中的信号图,如何绘制标记相应时间索引的线? 具体来说,给定时间索引范围为0到2.6(s)的信号图,我想绘制垂直红线以指示列表的相应时间索引,我该怎么办? 问题答案: 添加无需覆盖实际高度即可覆盖整个绘图窗口的垂直线的标准方法是 要么 您可以使用许多可用于其他情节命令的关键字(例如,,…)。您可以传递关键字参数,如果愿意,可以传递坐标(例如,将覆盖图的中部)。水平线()和矩形

  • 我想要java实现生成给定集的nCr组合。例如,如果set是{"java","php",". net","python"}程序应该返回给定集的所有可能的nCr集。

  • 有没有可能通过它们的方程式在画布中画出曲线呢?如果是,怎么做?假设我有一个数学方程y=0,5*x^2,如何打印方程的图形? 我尝试使用和方法,但未成功。

  • 我正在使用以下命令: 其中: 我希望在从到的每个点上都有一条垂直线。