Um eine große Menge gleichartiger Objekte zu zeichnen Sie haben eine der verschiedenen matplotlib.collections
Klassen verwenden - ach, ihre Nutzung ein bisschen obskur ist, zumindest wenn es mein Verständnis ist, dass ...
beteiligt ist
Wie dem auch sei von den docs und this official example Start konnte ich den folgenden Code, um gemeinsam
$ cat ellipses.py
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import EllipseCollection
N = 10**5
# centres of ellipses — uniform distribution, -5<=x<5, -3<=y<3
xy = np.random.random((N,2))*np.array((5*2,3*2))-np.array((5,3))
# width, height of ellipses
w, h = np.random.random(N)/10, np.random.random(N)/10
# rotation angles, anticlockwise
a = np.random.random(N)*180-90
# we need an axes object for the correct scaling of the ellipses
fig, ax = plt.subplots()
# create the collection
ec = EllipseCollection(w, h, a,
units='x',
offsets=xy,
transOffset=ax.transData)
ax.add_collection(ec)
ax.autoscale(tight=True)
plt.savefig('el10^5.png')
ich es auf meine fast Low-End-Notebook
$ time python -c 'import numpy; import matplotlib.pyplot as p; f, a = p.subplots()'
real 0m0.697s
user 0m0.620s
sys 0m0.072s
$ time python ellipses.py
real 0m5.704s
user 0m5.616s
sys 0m0.080s
$
timed
Wie Sie sehen können, wenn Sie die erforderliche Staging für jede Handlung abschreiben, dauert es etwa 5 Sekunden - und was ist das Ergebnis?
Ich denke, dass die Details über Exzentrizität und Winkel sind in einer solchen dichten Darstellung verloren, aber ich weiß nicht, die Besonderheiten Ihrer Aufgabe und wird nicht weiter kommentieren.
Was passiert, wenn Sie die Figur am Ende speichern, anstatt sie mit mpl zu rendern? – pbreach
['matplotlib.collections'] (http://matplotlib.org/api/collections_api.html#module-matplotlib.collections) Klassen für das *** effiziente *** Zeichnen von großen Sammlungen von Objekten, die die meisten Eigenschaften teilen [ ...] - Betonung gehört mir – gboffi