Как эффективно изменить цвет многих перекрывающихся кругов в matplotlib - PullRequest
1 голос
/ 26 мая 2019

У меня около 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()

Вывод enter image description here

...