У меня около 1 миллиона крошечных кругов, нанесенных на график с разными радиусами.Я хотел бы покрасить все круги, которые перекрываются, в красный, и все круги, которые не перекрываются, в синий.Я полагаю, что я мог бы достичь этого, беря расстояние между центрами каждого круга и затем вычисляя, меньше ли это расстояние, чем сумма радиусов двух рассматриваемых кругов, но это займет очень долгое время для итерации более 1 миллиона точек данных.
Я использую matplotlib.patches.Circle для построения окружностей.Есть ли эффективный способ сделать это?
Моя попытка пока выглядит примерно так:
fig = plt.figure()
ax = fig.add_subplot(111,projection='mollweide')
plt.grid(True)
circles = [Circle(xy=(ra[i]*np.pi/180,dec[i]*np.pi/180),radius = angle[i],color = 'red', alpha = 0.6)
for i in range(N)]
for c in circles:
ax.add_artist(c)
plt.show()
Вывод 