import matplotlib matplotlib.use("Agg") import numpy as np from pathlib import Path from scipy.spatial import Voronoi, voronoi_plot_2d np.set_printoptions(precision=1, suppress=True) points = np.array( [ [0.0, 0.0], [0.0, 1.0], [0.0, 2.0], [1.0, 0.0], [1.0, 1.0], [1.0, 2.0], [2.0, 0.0], [2.0, 1.0], [2.0, 2.0], ] ) vor = Voronoi(points) center_point = 4 center_region_index = vor.point_region[center_point] center_region = vor.regions[center_region_index] finite_ridges = [ridge for ridge in vor.ridge_vertices if -1 not in ridge] print("input points:", len(points)) print("Voronoi vertices:") for vertex in vor.vertices: print(f" [{vertex[0]:.1f}, {vertex[1]:.1f}]") print("regions total:", len(vor.regions)) print("point 4 region index:", center_region_index) print("point 4 region vertices:", center_region) print("finite ridges:", len(finite_ridges)) print("first ridge pairs:") for point_pair, vertex_pair in zip(vor.ridge_points[:4], vor.ridge_vertices[:4]): print(f" points {point_pair.tolist()} -> vertices {vertex_pair}") fig = voronoi_plot_2d( vor, show_vertices=False, line_colors="tab:blue", line_width=2, point_size=35, ) ax = fig.axes[0] ax.set_aspect("equal", adjustable="box") ax.set_xlim(-0.5, 2.5) ax.set_ylim(-0.5, 2.5) ax.set_title("Voronoi diagram") fig.savefig("voronoi-demo.png", dpi=150, bbox_inches="tight") print("saved plot:", Path("voronoi-demo.png").name)