def squares(points): def around(x, d=0.5): return ((x[0]-d,x[1]-d),(x[0]-d,x[1]+d),(x[0]+d,x[1]+d),(x[0]+d,x[1]-d)) d = 0.5 * min([d for d in SigTools.sqdist(points).flat if d != 0]) ** 0.5 v = [around(tuple(x), d) for x in points] points,codes = (),() for vi in v: points = points + vi + (vi[0],) codes = codes + (matplotlib.path.Path.MOVETO,) + (matplotlib.path.Path.LINETO,) * len(vi) return points, codes