Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为面积定义的voronoi多边形着色(1/面积)?_Python_Polygon_Area_Voronoi_Colorize - Fatal编程技术网

Python 如何为面积定义的voronoi多边形着色(1/面积)?

Python 如何为面积定义的voronoi多边形着色(1/面积)?,python,polygon,area,voronoi,colorize,Python,Polygon,Area,Voronoi,Colorize,我已经生成了一个Voronoi图,计算了面积,然后计算了形成的多边形的1/面积(通量),并找到了平均通量。我现在想用通量对多边形进行颜色编码(我只想用通量>平均通量对多边形进行着色) Voronoi算法 列表_ra=tbdata[cut3]['ra'] list_dec=tbdata[cut3][dec'] 点=np.列\堆栈((列表\ ra,列表\ dec)) vor=Voronoi(点数) #打印vor顶点 #打印vor区域 #打印vor.ridge\u顶点 #打印vor.ridge\u点

我已经生成了一个Voronoi图,计算了面积,然后计算了形成的多边形的1/面积(通量),并找到了平均通量。我现在想用通量对多边形进行颜色编码(我只想用通量>平均通量对多边形进行着色)

Voronoi算法 列表_ra=tbdata[cut3]['ra'] list_dec=tbdata[cut3][dec'] 点=np.列\堆栈((列表\ ra,列表\ dec)) vor=Voronoi(点数) #打印vor顶点 #打印vor区域 #打印vor.ridge\u顶点 #打印vor.ridge\u点 打印透镜(vor.点\区域) plt.绘图(点[:,0],点[:,1],'。) plt.绘图(vor.顶点[:,0],vor.顶点[:,1],“.”,markersize=0.25) plt.xlim(150.02150.21);plt.ylim(2.26,2.45) 对于vor.ridge_顶点中的单纯形: 单工=np.asarray(单工) 如果np.all(单纯形>=0): plt.plot(vor.顶点[simplex,0],vor.顶点[simplex,1],'k-') 中心=点。平均值(轴=0) 对于pointidx,拉链中的单纯形(vor.ridge_点,vor.ridge_顶点): 单工=np.asarray(单工) 如果np.有(单纯形<0): i=simplex[simplex>=0][0]#有限端Voronoi顶点 t=点[pointidx[1]]-点[pointidx[0]]#切线 t=t/np.linalg.norm(t) n=np.数组([-t[1],t[0]])#正常 中点=点[pointidx]。平均值(轴=0) 远点=垂直顶点[i]+np符号(np点(中点-中心,n))*n*100 plt.绘图([vor.顶点[i,0],远点[0]], [vor.顶点[i,1],远点[1],'k--') plt.xlabel(r'RA/deg',尺寸=12) plt.ylabel(r'DEC/deg',尺寸=12) plt.savefig('Voronoi_10x10',dpi=300) plt.show() ############################################################################################### #多边形区域 总数=0 总计=[] 对于范围内的i(len(vor.point_区域)): 多边形坐标=[vor.顶点[y]表示vor.区域[vor.点\U区域[i]] 列表多边形坐标=np.asarray(多边形坐标) r=列表多边形坐标[:,0] d=列表多边形坐标[:,1] def PolyArea(研发): 返回0.5*np.abs(np.dot(r,np.roll(d,1))-np.dot(d,np.roll(r,1))) 总计=多面积(r,d) 总计。追加(总计) 总计=0 对于范围内的i(len(vor.point_区域)): totaltotal+=总计[i] 打印('totaltotal',totaltotal) 平均面积=总面积/1533 打印(“平均面积”,平均面积) ################################################################################################ #通量分布 面积=np.数组(总计) 打印('区域',区域) 通量=1/面积 打印(“通量”,通量) 总通量=0 对于范围内的i(1533): 总通量+=通量[i] 打印(“总通量”,总通量) 平均通量=总通量/1533 打印(“平均通量”,平均通量)
#Voronoi algorithm

list_ra=tbdata[cut3]['RA']

list_dec=tbdata[cut3]['DEC']

points=np.column_stack((list_ra, list_dec))

vor=Voronoi(points)

#print vor.vertices

#print vor.regions

#print vor.ridge_vertices
#print vor.ridge_points

print len(vor.point_region)

plt.plot(points[:, 0], points[:, 1], '.')

plt.plot(vor.vertices[:, 0], vor.vertices[:, 1], '.', markersize=0.25)

plt.xlim(150.02, 150.21); plt.ylim(2.26, 2.45)

for simplex in vor.ridge_vertices:

     simplex = np.asarray(simplex)

     if np.all(simplex >= 0):

      plt.plot(vor.vertices[simplex, 0], vor.vertices[simplex, 1], 'k-')

center = 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 = points[pointidx[1]] - points[pointidx[0]]  # tangent

         t = t / np.linalg.norm(t)

         n = np.array([-t[1], t[0]]) # normal

         midpoint = points[pointidx].mean(axis=0)

         far_point = vor.vertices[i] + np.sign(np.dot(midpoint - center, n)) * n * 100

         plt.plot([vor.vertices[i,0], far_point[0]],

                  [vor.vertices[i,1], far_point[1]], 'k--')

plt.xlabel(r' RA/deg ',size=12)

plt.ylabel(r' DEC/deg ',size=12)

plt.savefig('Voronoi_10x10', dpi=300)

plt.show()

###############################################################################################
#Polygon areas

total=0

totals=[]

for i in range (len(vor.point_region)):

    polygon_coordinates=[vor.vertices[y] for y in vor.regions[vor.point_region[i]]]

    list_polygon_coordinates=np.asarray(polygon_coordinates)

    r=list_polygon_coordinates[:, 0]

    d=list_polygon_coordinates[:, 1]

    def PolyArea(r,d): 
        return 0.5*np.abs(np.dot(r,np.roll(d,1))-np.dot(d,np.roll(r,1)))

    total=PolyArea(r,d)

    totals.append(total)

totaltotal=0

for i in range(len(vor.point_region)):

    totaltotal+=totals[i]

print ('totaltotal', totaltotal)

average_area=totaltotal/1533

print ('average_area', average_area)

################################################################################################
#Flux distribution

area=np.array(totals)

print ('area', area)

flux=1/area

print ('flux', flux)

totaltotal_flux=0

for i in range(1533):

    totaltotal_flux+=flux[i]

print ('totaltotal_flux', totaltotal_flux)

average_flux=totaltotal_flux/1533

print ('average_flux', average_flux)