Для набора сгенерированных точек в каждой точке нанесены окружности, и мы видим, что некоторые из них пересекают многоугольник, как показано ниже.
- Мое намерение состоит в том, чтобы создать анимацию, которая показывает каждый круг графика один за другим. Как мне это сделать? (Например: сначала отображается только зеленый круг, затем оранжевый и т. Д.)
- Можно ли также показать точки пересечения между кругом и многоугольником для каждого круга, отображаемого в анимации?
Код для генерации окружностей и распределения:
from descartes import PolygonPatch
import matplotlib.pyplot as plt
import alphashape
import numpy as np
import matplotlib as mpl
from matplotlib.collections import PatchCollection
xx = np.linspace(40,50,5)
yy = np.linspace(90,110,5)
zz = np.vstack((xx,yy)).T
fig = plt.figure(1, figsize=(12, 5))
ax = fig.add_subplot(111, aspect='equal')
x = np.random.uniform(45,60, 1000)
y = np.random.uniform(100, 110, 1000)
test = np.vstack((x,y)).T
alpha_shape = alphashape.alphashape(test, 0.)
plt.scatter(*zip(*test))
ax.add_patch(PolygonPatch(alpha_shape, alpha=0.2))
colormap = mpl.cm.Dark2.colors
plt.plot(xx,yy,zorder=3)
plt.scatter(xx,yy,zorder=2)
circles = []
for i, colori in zip(range(0,len(xx)), colormap):
circles.append(plt.Circle(zz[i], 3, color=colori, fill=False))
coll = PatchCollection(circles, match_original=True, zorder=1)
ax.add_collection(coll)
plt.grid(b=None)
plt.autoscale()
plt.show()