Hi!
wie der Titel sagt, suche ich eine Bibliothek, mit der ich große Datenmengen plotten kann.
Die Daten liegen in einer Textdatei als xyz-Koordinaten vor (Hintergrund: das sind Aufnahmen eines Konfokalmikroskops, das genutzt wird, um sehr genaue Höhentopografien von (in meinem Fall Metall-3Dgedruckter) Oberflächen zu erhalten.)
Eine Datei hat etwa 200 MB und 20,000,000 Einträge. Plotly und Matplotlib haben das auf die ersten Versuche nicht geschafft.
Außerdem möchte ich jedes Pixel abhängig vom Höhenwert unterschiedlich einfärben.
Hat jemand von euch eine Idee, was ich dazu nutzen könnte?
Danke im Voraus!!
Bibliothek zum plotten großer Datenmengen gesucht
Auf meinem 4K-Monitor habe ich knapp 8 Millionen Pixel. 20000000 Datenpunkte lassen sich da also im Grund nicht darstellen. Darum die Frage: kannst du die nicht downsampeln? Oder einen Ausschnitt darstellen?
Sonst fällt mir noch VTK ein. Das ist zur Visualisierung von Daten aus dem medizinischen Bereich, und unten drunter AFAIK in C++ geschrieben.
Sonst fällt mir noch VTK ein. Das ist zur Visualisierung von Daten aus dem medizinischen Bereich, und unten drunter AFAIK in C++ geschrieben.
Einfach nur zehnteln ist schwierig. Kann ok sein, wenn du nur einen groben Überblick haben willst. Aber wenn du feine Strukturen nicht falsch repräsentieren willst, musst du komplexere Algorithmen wie zb bikubische Filter benutzen.
@G-Rizzle: Soll das interaktiv sein oder am Ende nur ein PNG rauskommen? Und sind die xy-Koordinaten in einem schönen Rechteckgitter angeordnet?
Für statische Bilder hatte ich bei einer 28 MPixel großen Grafik absolut keine Probleme mit matplotlib. Dauert nur ein paar Sekunden mit `imsave`:
Und ein `plt.plot` kommt meiner Erfahrung nach auch mit mehreren Millionen Punkten klar, wenn man die Grafik nicht als Vektorgrafik speichert und `","` als Format benutzt.
Für statische Bilder hatte ich bei einer 28 MPixel großen Grafik absolut keine Probleme mit matplotlib. Dauert nur ein paar Sekunden mit `imsave`:
Code: Alles auswählen
image = np.random.random((5000, 4000))
plt.imsave("image.png", image, cmap=...)
Schon "Plotly" ausprobiert?
https://plotly.com/
https://plotly.com/python/
https://www.tutorialspoint.com/plotly/index.htm
Das ist für große Datenmengen und Interaktionen gemacht.
Ausserdem ist es für mehrere Programmiersprachen verfügbar.
https://plotly.com/
https://plotly.com/python/
https://www.tutorialspoint.com/plotly/index.htm
Das ist für große Datenmengen und Interaktionen gemacht.
Ausserdem ist es für mehrere Programmiersprachen verfügbar.
Zuletzt geändert von tonikae am Montag 6. Dezember 2021, 10:58, insgesamt 2-mal geändert.
@tonikae: er schreibt ja, dass er das probiert hat.
Wir benutzen das auch, und es ist gut. Aber nutzt den Browser als Engine. Das gibt viel Flexibilität, aber erhöht auch klar den Overhead. So weit ich weiß werden da ja die Daten einfach in HTML bzw JS Strukturen gerendert.
Wir benutzen das auch, und es ist gut. Aber nutzt den Browser als Engine. Das gibt viel Flexibilität, aber erhöht auch klar den Overhead. So weit ich weiß werden da ja die Daten einfach in HTML bzw JS Strukturen gerendert.
Hi, danke dafürnarpfel hat geschrieben: ↑Montag 6. Dezember 2021, 10:36 @G-Rizzle: Soll das interaktiv sein oder am Ende nur ein PNG rauskommen? Und sind die xy-Koordinaten in einem schönen Rechteckgitter angeordnet?
Für statische Bilder hatte ich bei einer 28 MPixel großen Grafik absolut keine Probleme mit matplotlib. Dauert nur ein paar Sekunden mit `imsave`:Und ein `plt.plot` kommt meiner Erfahrung nach auch mit mehreren Millionen Punkten klar, wenn man die Grafik nicht als Vektorgrafik speichert und `","` als Format benutzt.Code: Alles auswählen
image = np.random.random((5000, 4000)) plt.imsave("image.png", image, cmap=...)
was meinst Du mit der "plt.plot, wenn nciht als Vektorgrafik gespeichert"?
@G-Rizzle: Pixelgrafik, Vektorgrafik. Wobei `plt.plot` wohl für den Anwendungszweck eher nicht geeignet ist.
- __blackjack__
- User
- Beiträge: 13079
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Wobei man `plt.plot()` aber auch sagen kann, dass die Daten als Pixel gerendert werden sollen (während der Rest Vektorgrafik bleibt), wenn man besonders viele Datenpunkte hat. Ansonsten sind für mehr Datenpunkte als man sinnvoll sehend erkennen kann auch 2D-Histogramme und `plt.hexbin()` sinnvolle Darstellungsmöglichkeiten.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Danke nochmal für eure Antworten!
Ich habe mich jetzt für open3d entschieden, eine Bibliothek zum erstellen von Objekten aus großen Pointclouds.
Selbst interaktive Darstellung in 3D ist nahezu ruckelfrei (selbst bei >20,000,000) Punkten möglich
Ich habe mich jetzt für open3d entschieden, eine Bibliothek zum erstellen von Objekten aus großen Pointclouds.
Selbst interaktive Darstellung in 3D ist nahezu ruckelfrei (selbst bei >20,000,000) Punkten möglich