Beschleunigte Matplotlib Streudiagramme

8

Ich versuche ein interaktives Programm zu erstellen, das hauptsächlich matplotlib verwendet, um Scatter-Plots von ziemlich vielen Punkten (10k-100k oder so) zu erstellen. Momentan funktioniert es, aber die Änderungen dauern zu lange. Eine kleine Anzahl von Punkten ist in Ordnung, aber sobald die Zahl steigt, werden die Dinge in Eile frustrierend. Also arbeite ich an Möglichkeiten, die Streuung zu beschleunigen, aber ich habe nicht viel Glück

Es gibt den offensichtlichen Weg, etwas zu tun (so wie es jetzt implementiert wird) (Ich realisiere, dass der Plot ohne Aktualisierung neu gezeichnet wird. Ich wollte das fps-Ergebnis bei großen Aufrufen nicht zufällig ändern).

%Vor%

Was eine schnelle 0,7 fps

ergibt

Alternativ kann ich die von scatter zurückgegebene Sammlung bearbeiten. Dafür kann ich Farbe und Position ändern, weiß aber nicht, wie ich die Größe jedes Punktes ändern soll. Das würde ich in etwa so sehen.

%Vor%

Dies führt zu langsameren 0,7 fps. Ich wollte versuchen, CircleCollection oder RegularPolygonCollection zu verwenden, da ich dadurch die Größe leicht ändern kann, und es ist mir egal, den Marker zu ändern. Aber ich kann nicht zeichnen, also habe ich keine Ahnung, ob sie schneller wären. Also, an dieser Stelle suche ich nach Ideen.

    
george 12.08.2013, 05:14
quelle

2 Antworten

4

Ich habe das einige Male durchgespielt und versucht, Streudiagramme mit einer großen Anzahl von Punkten zu beschleunigen, indem ich es auf verschiedene Weise versuche:

  • Verschiedene Markentypen
  • Begrenzende Farben
  • Das Dataset wird gekürzt
  • Verwenden einer Heatmap / eines Gitters anstelle eines Streudiagramms

Und keines dieser Dinge hat funktioniert. Matplotlib ist einfach nicht sehr leistungsfähig, wenn es um Streudiagramme geht. Meine einzige Empfehlung ist, eine andere Plot-Bibliothek zu verwenden, obwohl ich persönlich keine passende gefunden habe. Ich weiß, das hilft nicht viel, aber es kann dir einige Stunden fruchtloses Basteln ersparen.

    
jozzas 12.08.2013 05:45
quelle
4

Wir arbeiten aktiv an der Leistung für große Matplotlib Streudiagramme. Ich würde Sie ermutigen, sich an der Konversation zu beteiligen ( Ссылка ) und, noch besser, testen Sie die Pull-Anfrage, die eingereicht wurde, um das Leben für einen ähnlichen Fall viel besser zu machen ( Ссылка ).

HTH

    
pelson 15.08.2013 20:33
quelle

Tags und Links