Voronoi is a lot of fun indeed. I gave scipy.spatial.Voronoi a try, and got it to work (sort of; some polygons are missing): # based on http://stackoverflow.com/questions/27548363/from-voronoi-tessellation-to-shapely-polygons from random import randrange from scipy.spatial import Voronoi size(600, 300) pointsAmount = 160 points = [(randrange(width()), randrange(height())) for i in range(pointsAmount)] V = Voronoi(points) regions = [V.vertices[line] for line in V.regions if -1 not in line] stroke(1) strokeWidth(2) for R in regions: pts = [(float(x), float(y)) for x, y in R] if len(pts): fill(random(), random(), 0.7, 0.7) polygon(*pts) r = 1 stroke(None) fill(0) for x, y in points: oval(x-r, y-r, r*2, r*2) saveImage('voronoi-drawbot-2.png') and here is the bitmap version ported from PIL happy voronoiing!