У меня есть несколько точек (около 3000) и ребер (около 6000) в этом формате:
points = numpy.array([1,2],[4,5],[2,7],[3,9],[9,2])
edges = numpy.array([0,1],[3,4],[3,2],[2,4])
где ребра являются индексами в точках, так что начальная и конечная координаты каждого ребра определяются как:
points[edges]
Я ищу более быстрый / лучший способ их построения. В настоящее время у меня есть:
from matplotlib import pyplot as plt
x = points[:,0].flatten()
y = points[:,1].flatten()
plt.plot(x[edges.T], y[edges.T], 'y-') # Edges
plt.plot(x, y, 'ro') # Points
plt.savefig('figure.png')
Я читал о lineCollections, но не уверен, как их использовать. Есть ли способ использовать мои данные более напрямую? Какое здесь узкое место?
Некоторые более реалистичные данные теста, время для построения графика составляет около 132 секунд:
points = numpy.random.randint(0, 100, (3000, 2))
edges = numpy.random.randint(0, 3000, (6000, 2))