J'ai quelques points (environ 3000) et les bords (environ 6000) dans ce type de format:Traçage un grand nombre de points et arêtes dans matplotlib
points = numpy.array([1,2],[4,5],[2,7],[3,9],[9,2])
edges = numpy.array([0,1],[3,4],[3,2],[2,4])
où les arêtes sont des indices en points, de sorte que la début et coordonnées fin de chaque bord est donnée par:
points[edges]
Je cherche un moyen plus rapide/meilleure façon de les tracer. Actuellement, j'ai:
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')
Je lis à propos de lineCollections, mais je ne sais pas comment les utiliser. Existe-t-il un moyen d'utiliser mes données plus directement? Quel est le goulot d'étranglement ici?
Certaines données de test plus réalistes, le temps de tracer est environ 132 secondes:
points = numpy.random.randint(0, 100, (3000, 2))
edges = numpy.random.randint(0, 3000, (6000, 2))
Peut-être que http://jbdeaton.com/2011/speed-up-plot-rendering-in-pythonmatplotlib/ pourrait être utile. Ajoutez rasterized = True à l'appel de plot(). –