包含N个点的voronoi图

时间:2016-05-10 22:21:25

标签: python scipy geometry voronoi

我有一个200x200二维数据点阵列,对应于最初以FITS格式存储的图像。数组中的每个数字表示该坐标在空间中的光子数。

我正在尝试为这些数据点创建一个Voronoi图,如下所示 -

  import numpy
    import matplotlib
    import scipy
    from astropy.io import fits


    #Header List
    hdulist = fits.open("ElGordo_img_0540_full.fits")


    #Converting the photon data to coordinates
    #Any non-zero photon intensity is counted only once 
    #For testing purposes


    def convert_coords(data):
        coords = []    
        for i in range(len(data)):
            for j in range(len(data[i])):
                if data[i][j] >0:
                    coords.append([j,i])

        return coords





    # print convert_coords(test)

    #Image DATA array stored in the Primary header          

    data_array = hdulist[0].data


    #converting to coordinate form
    coords_data = convert_coords(data_array)

    #Making Voronoi plot
    from scipy.spatial import Voronoi, voronoi_plot_2d
    vor = Voronoi(coords_data)

    #Plotting Voronoi 
    import matplotlib.pyplot as plt
    voronoi_plot_2d(vor)
    plt.show()

但是,这种方法只给Voronoi每个方框都有一个“单一”点。 the image looks a complete mess

为了从情节中理解,我需要一种方法在我的Voronoi图中包含多个点(我认为这被称为'第k阶Voronoi)。我怎样才能在Python中实现它?我可能使用的任何预先存在的库/方法?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以尝试加权voronoi图。它被定义为euklidian距离减去重量。