如何从scipy.spatial.Voronoi公司

2024-04-26 13:40:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用scipy.spatial.Voronoi公司要计算Voronoi图:

import numpy as np
from scipy.spatial import Voronoi

points = np.array([[51.129378, 17.02925 ],
                   [51.086225, 17.012689],
                   [50.913433, 15.765608],
                   [53.121764, 17.987906],
                   [53.134083, 17.995708],
                   [51.75805 , 19.529786]])


vor = Voronoi(points)

我从it收到以下图表:

Voronoi diagram

如何获得橙色点的坐标?它似乎没有(至少有文档记录)属性。在

动机:我的目标是计算没有蓝点的最大圆。所以我计划计算每个橙色和蓝色点之间的距离。然后我将检查每个橙色点,并选择一个将有最高的最小距离值。它将是我目标圆的中心。没有沃罗诺也许还有别的办法吗?在


Tags: fromimportnumpy距离目标asnp公司
1条回答
网友
1楼 · 发布于 2024-04-26 13:40:57

这些点在vertices属性中可用。documentation of Voronoivertices属性描述为“Voronoi顶点的坐标”(在链接的网页中向下滚动以查找属性的描述)

下面是你的例子:

In [5]: import numpy as np

In [6]: from scipy.spatial import Voronoi

In [7]: points = np.array([[51.129378, 17.02925 ],
   ...:                    [51.086225, 17.012689],
   ...:                    [50.913433, 15.765608],
   ...:                    [53.121764, 17.987906],
   ...:                    [53.134083, 17.995708],
   ...:                    [51.75805 , 19.529786]])
   ...:                    

In [8]: vor = Voronoi(points)

以下是绘制为橙色点的点:

^{pr2}$

请注意,voronoi_plot_2d(vor)在绘图上选择的x和y限制太小,无法看到所有顶点。下面是一个展示它们的情节:

In [15]: import matplotlib.pyplot as plt

In [16]: from scipy.spatial import voronoi_plot_2d

In [17]: voronoi_plot_2d(vor)
Out[17]: <Figure size 1280x960 with 1 Axes>

In [18]: plt.xlim(50, 58)
Out[18]: (50, 58)

In [19]: plt.ylim(11, 20)
Out[19]: (11, 20)

plot

相关问题 更多 >