Раскрасить диаграмму Вороного
Я пытаюсь раскрасить диаграмму Вороного, созданную с помощьюscipy.spatial.Voronoi
, Вот мой код:
import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial import Voronoi, voronoi_plot_2d
# make up data points
points = np.random.rand(15,2)
# compute Voronoi tesselation
vor = Voronoi(points)
# plot
voronoi_plot_2d(vor)
# colorize
for region in vor.regions:
if not -1 in region:
polygon = [vor.vertices[i] for i in region]
plt.fill(*zip(*polygon))
plt.show()
Полученное изображение:
Как вы можете видеть, некоторые из областей Вороного на границе изображения не окрашены. Это связано с тем, что некоторые индексы для вершин Вороного для этих областей установлены на-1
т. е. для этих вершин вне диаграммы Вороного. Согласно документам:
регионы: (список списка целых, форма (nregions, *)) Индексы вершин Вороного, образующих каждую область Вороного.-1 указывает вершину за пределами диаграммы Вороного.
Чтобы раскрасить и эти области, я попытался просто удалить эти «внешние» вершины из многоугольника, но это не сработало. Я думаю, мне нужно заполнить некоторые точки на границе области изображения, но я не могу понять, как этого добиться разумно.
Кто-нибудь может помочь?