Я пытаюсь раскрасить диаграмму Вороного, созданную с помощью 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
, т.е. Для тех вершин вне диаграммы Вороного. Согласно документам:
области: (список списка ints, shape (nregions, *)) Индексы верных Вороных, образующих каждую область Вороного. -1 указывает вершину вне диаграммы Вороного.
Чтобы раскрасить эти регионы, я попытался просто удалить эти "внешние" вершины из многоугольника, но это не сработало. Я думаю, мне нужно заполнить некоторые точки на границе области изображения, но я не могу понять, как это сделать разумно.
Может ли кто-нибудь помочь?