Ich benutze Matplotlib, um eine 3D-Matrix von Punkten zu streuen. Ich verwende den folgenden Code ein:matplotlib Slow 3D Scatter Rotation
import pylab as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
my_data = np.random.rand(6500,3) # toy 3D points
fig = plt.figure()
ax = Axes3D(plt.gcf())
ax.scatter(my_data[:,0],my_data[:,1],my_data[:,2])
plt.show()
Es funktioniert, so öffnet sich ein Fenster, in dem ich meine Punkte sehen.
Wenn ich jedoch versuche, das Diagramm mit der Maus zu drehen (klicken und ziehen), dreht es sich wirklich langsam.
Ich denke, 6500 Punkte sind nicht viel für solch eine langsame und laggy Rotation, also frage ich mich, ob es eine Vorkonfiguration geben muss, um es zu beschleunigen.
Hinweis: Ich habe versucht, Matlab zu verwenden, und ich kann ein viel größeres Streudiagramm ohne Verzögerung drehen, also ist es keine Computerbeschränkung.
Kann jemand diesen Code ausführen und sehen, ob auch die langsame Rotation erlebt?
BEARBEITEN: Mit dem Systemmonitor kann ich sehen, dass beim Drehen der Punkte nur eine CPU verwendet wird, so dass Matplotlib den Prozess nicht parallelisiert.
Mein Computer Spezifikationen:
- Intel (R) Core (TM) i5-3550 CPU @ 3.30GHz
- Grafikkarte: Xeon E3-1200 v2/3. Gen-Core-Prozessor Grafik-Controller
- Speicher: 10 GB RAM
- HDD: Samsung SSD 500 GB
Ubuntu 16.10
Ich fürchte, dass Matplotlib wurde nicht mit Geschwindigkeit im Hinterkopf entwickelt, und langsame Leistung in Ihrem Fall ist keine besondere Eigenart Ihrer lokalen Installation - es ist die Art, wie mplot3d geschrieben wurde. Wenn Sie schnelle 3D-Streudiagramme mit Python verwenden möchten, können Sie 'plotly.py' lib ausprobieren - es ist sehr schnell, obwohl seine Python-Fähigkeiten etwas einschränkend sind. –
Echo, was @VlasSokolov sagt - Matplotlib ist nicht für schnelle interaktive Plotten, vor allem in 3D (das ist keine echte vollwertige 3D-Fähigkeit, mehr nur für die Bequemlichkeit) konzipiert. Sie können auch in Mayavi für 3D-Plotting suchen. Auch als Python-Tipp würde ich gegen 'import pylab as plt' empfehlen. 'plt' wird normalerweise für' matplotlib.pyplot' * nicht * 'pylab' verwendet. Alle Beispiele, die Sie vielleicht gefunden haben, sind alt. Außerdem ist die Verwendung von pylab in einem Skript überhaupt nicht empfehlenswert - verwenden Sie matplotlib und numpy separat. – Ajean
Siehe https://stackoverflow.com/questions/8955869/why-is-plotting-with-matplotlib-so-slow – thomaskeefe