擅长:python、mysql、java
<p>我不认为有足够的信息,从数据中可用的vor结构来解决这个问题,而不做至少一些voronoi计算再次。既然如此,这里是原始voronoi_plot_2d函数的相关部分,您应该能够使用它们来提取与vor.max_bound或vor.min_bound相交的点,vor.max_bound或vor.min_bound是图表的左下角和右上角,以便计算出多边形的其他坐标。</p>
<pre><code>for simplex in vor.ridge_vertices:
simplex = np.asarray(simplex)
if np.all(simplex >= 0):
ax.plot(vor.vertices[simplex,0], vor.vertices[simplex,1], 'k-')
ptp_bound = vor.points.ptp(axis=0)
center = vor.points.mean(axis=0)
for pointidx, simplex in zip(vor.ridge_points, vor.ridge_vertices):
simplex = np.asarray(simplex)
if np.any(simplex < 0):
i = simplex[simplex >= 0][0] # finite end Voronoi vertex
t = vor.points[pointidx[1]] - vor.points[pointidx[0]] # tangent
t /= np.linalg.norm(t)
n = np.array([-t[1], t[0]]) # normal
midpoint = vor.points[pointidx].mean(axis=0)
direction = np.sign(np.dot(midpoint - center, n)) * n
far_point = vor.vertices[i] + direction * ptp_bound.max()
ax.plot([vor.vertices[i,0], far_point[0]],
[vor.vertices[i,1], far_point[1]], 'k--')
</code></pre>