相关疑难解决方法(0)

着色Voronoi图

我正在尝试着色使用创建的Voronoi图scipy.spatial.Voronoi.这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial import Voronoi, voronoi_plot_2d

# make up data points
points = np.random.rand(15,2)

# compute Voronoi tesselation
vor = Voronoi(points)

# plot
voronoi_plot_2d(vor)

# colorize
for region in vor.regions:
    if not -1 in region:
        polygon = [vor.vertices[i] for i in region]
        plt.fill(*zip(*polygon))

plt.show()
Run Code Online (Sandbox Code Playgroud)

结果图像:

Voronoi图

正如您所看到的,图像边界处的一些Voronoi区域没有着色.这是因为这些区域的Voronoi顶点的一些索引被设置为-1,即,对于Voronoi图之外的那些顶点.根据文件:

区域:(整数列表,形状(nregions,*))形成每个Voronoi区域的Voronoi顶点的索引.-1表示Voronoi图外的顶点.

为了使这些区域着色,我试图从多边形中删除这些"外部"顶点,但这不起作用.我想,我需要在图像区域的边界填写一些点,但我似乎无法弄清楚如何合理地实现这一点.

有人可以帮忙吗?

python visualization voronoi matplotlib scipy

48
推荐指数
3
解决办法
3万
查看次数

如何在Python中计算两条线的交点?

我有两条线在一点交叉.我知道这两行的终点.如何计算Python中的交叉点?

# Given these endpoints
#line 1
A = [X, Y]
B = [X, Y]

#line 2
C = [X, Y]
D = [X, Y]

# Compute this:
point_of_intersection = [X, Y]
Run Code Online (Sandbox Code Playgroud)

python geometry line intersect

41
推荐指数
7
解决办法
8万
查看次数

从Voronoi单元获取有界多边形坐标

我有点(例如,lat,lon对的细胞塔位置),我需要得到它们形成的Voronoi细胞的多边形.

from scipy.spatial import Voronoi

tower = [[ 24.686 ,  46.7081],
       [ 24.686 ,  46.7081],
       [ 24.686 ,  46.7081]]

c = Voronoi(towers)
Run Code Online (Sandbox Code Playgroud)

现在,我需要为每个单元格的lat,lon坐标获取多边形边界(以及该多边形所包围的质心).我需要这个Voronoi也是有限的.意味着边界不会变为无穷大,而是在边界框内.

python voronoi polygons computational-geometry

13
推荐指数
1
解决办法
4837
查看次数

Python有限边界Voronoi单元

我试图调整我在stackoverflow上找到的代码来创建一个有限边界的voronoi单元.我在/sf/answers/1447505321/上找到了下面的代码,但我的问题是虽然voronoi单元格在边界处没有进入无限远,但它们仍然太远了.即使半径= 0,脊顶点也太远了.我理想地希望边界voronoi顶点与中心的其余voronoi单元的间隔大约相同,即我希望边界处的voronoi单元的大小与中心的大小相似.

我正在使用的数据点是

points = [[-30.0, 30.370371], [-27.777777, 35.925926], [-34.444443, 58.51852], [-2.9629631, 57.777779], [-17.777779, 75.185181], [-29.25926, 58.148151], [-11.111112, 33.703705], [-11.481482, 40.0], [-27.037037, 40.0], [-7.7777777, 94.444443], [-2.2222223, 122.22222], [-20.370371, 106.66667], [1.1111112, 125.18518], [-6.2962961, 128.88889], [6.666667, 133.7037], [11.851852, 136.2963], [8.5185184, 140.74074], [20.370371, 92.962959], [17.777779, 114.81482], [12.962962, 97.037041], [13.333334, 127.77778], [22.592592, 120.37037], [16.296295, 127.77778], [11.851852, 50.740742], [20.370371, 54.814816], [19.25926, 47.40741], [32.59259, 122.96296], [20.74074, 130.0], [24.814816, 84.814819], [26.296295, 91.111107], [56.296295, 131.48149], [60.0, 141.85185], [32.222221, 136.66667], [53.703705, 147.03703], [87.40741, 196.2963], [34.074074, 159.62964], [34.444443, …
Run Code Online (Sandbox Code Playgroud)

python visualization voronoi scipy

4
推荐指数
1
解决办法
4857
查看次数