- Lets-Plot ist eine multiplattformfähige Plotting-Bibliothek, die auf den Prinzipien der Grammar of Graphics basiert und statistische Datenvisualisierung in Python und Kotlin unterstützt.
- Es gibt getrennte Implementierungen für Python und Kotlin, sodass sie von Notebook-Umgebungen bis hin zu IDEs und der App-Entwicklung passend zu den Workflows der jeweiligen Ökosysteme eingesetzt werden kann.
- In Python lassen sich Plots nicht nur in Notebooks, sondern auch in SciView von PyCharm und IntelliJ IDEA anzeigen.
- In Kotlin zielt sie auf Visualisierungsanwendungsfälle vom Kotlin-Notebook bis zu Compose-Multiplatform-Apps.
- Sie bietet Geocoding, GeoDataFrame-Plotting sowie die Anpassung von Tooltips und Annotationen und eignet sich damit auch für räumliche Daten und interaktive Plots.
Überblick über Lets-Plot
- Lets-Plot ist eine multiplattformfähige Plotting-Bibliothek auf Basis der Prinzipien der Grammar of Graphics.
- Wer ggplot2 und Grammar of Graphics gemeinsam lernen möchte, wird auf Hadley Wickhams „ggplot2: Elegant Graphics for Data Analysis“ als Referenzmaterial verwiesen.
- Einstiegsmaterialien und Beispiele sind unter den folgenden Pfaden verfügbar:
Unterstützte Plattformen und Hauptfunktionen
-
Python
- Eine Python-Visualisierungsbibliothek, bereitgestellt als Grammar of Graphics for Python.
- Kann in Python-Notebooks verwendet werden.
- Plots lassen sich auch in SciView der IDEs PyCharm und IntelliJ IDEA anzeigen.
-
Kotlin
- Eine Kotlin-Multiplattform-Visualisierungsbibliothek, bereitgestellt als Grammar of Graphics for Kotlin.
- Zielt auf Anwendungsfälle im Kotlin-Ökosystem vom Kotlin-Notebook bis zu Compose-Multiplatform-Apps.
-
Geodaten-Visualisierung
-
Tooltips und Annotationen
- Für tooltip und annotation von Plot-Layern lassen sich Inhalte, Werteformatierung und Erscheinungsbild anpassen.
1 Kommentare
Hacker-News-Kommentare
Sieht großartig aus. Es scheint auf der ggplot2-artigen Grammar of Graphics zu basieren. Beispiele gibt es hier: https://lets-plot.org/pages/charts.html
Auch die Datenplots sehen ziemlich gut aus: https://lets-plot.org/pages/charts.html#discrete-icon-discre...
Gleiches gilt für die Verteilungsplots: https://lets-plot.org/pages/charts.html#visualization-of-dis...
Ich frage mich, wie sich dieses Projekt im Vergleich zu
plotnineschlägt, der Python-Plotting-Bibliothek im ggplot2-StilDer Nachteil von ggplot-artigen Bibliotheken in anderen Sprachen als R ist, dass man die enorme Zahl hervorragender Addon-Bibliotheken[1] verliert, die im Original verfügbar sind. Ich persönlich verarbeite viele Daten in Python, exportiere sie dann nach R und erstelle dort die gesamte Grafik
Ich habe den Eindruck, dass Leute aus dem Statistikbereich Grafiken wichtiger nehmen und mehr Zeit in die Ausarbeitung stecken. Außerdem hilft Copilot bei R-basierten ggplot-Semantiken und -Optionen wirklich gut, weil es so viel Lernmaterial gibt. Ob das auch für die feinen Unterschiede der ggplot-Nachbau-Bibliotheken gilt, weiß ich nicht
[1] https://youtu.be/7UjA_5gNvdw
Mit genügend Kontext liefern sie wahrscheinlich brauchbare Ergebnisse
Das hier wirkt auch ziemlich ähnlich zu
plotnine[0], das Python eine Grammar-of-Graphics-Schnittstelle bietet. Trotzdem mag ich ggplot, daher freue ich mich auf den Tag, an dem ich das in der Forschung einsetzen kannEs wäre schön, wenn sich
ggthemes,scientificplots[1] und andere ggplot-Bibliotheken nach lets-plot portieren oder dafür neu implementieren ließen0: https://plotnine.readthedocs.io/en/stable/
1: https://github.com/garrettj403/SciencePlots
Ich verstehe nicht, warum das nötig ist. Hat wirklich jemand dringend noch eine Plotting-Bibliothek gebraucht?
Seaborn ist gut, aber man kämpft immer noch mit der durchlässigen Abstraktion über matplotlib, was die Kombination erschwert, und Interaktivität bekommt man auch nicht leicht. Deshalb will ich so etwas. Ich hätte sogar versucht, so etwas selbst zu bauen, weil ich gute interaktive Diagramme will, die schnell sind und sich nativ anfühlen. Ggplot lässt einen sich nur darauf konzentrieren, was man zeichnen möchte, und dann einen DataFrame hineingeben; das hier scheint ähnlich zu sein
Gibt es eine Python-zentrierte Einführung oder Anleitung, um mit diesem Grammar-of-Graphics-Ansatz Plots zu erstellen? Oder muss man das ggplot2-Buch lesen und die R-Beispiele nach Python übertragen?
https://vega.github.io/vega/docs/
Alles ist in Kotlin Multiplatform umgesetzt, mit nur einem dünnen Python-Wrapper darüber. Ziemlich überraschend
Das größte Problem bei Plot-Bibliotheken war, dass sie Millionen von Datenpunkten nicht sofort gut verarbeiten konnten. Im letzten Data-Science-Projekt habe ich alle großen Plot-Bibliotheken ausprobiert, aber sobald es über ein paar Millionen Punkte hinausging, funktionierte keine mehr ordentlich.
Ich wollte einen Graphen, den man in Echtzeit visualisieren sowie hinein- und herauszoomen kann, und genau das wurde zum schwierigen Teil des Projekts. Ein Produkt behauptete zwar, das über Cloud-GPUs verarbeiten zu können, aber dafür brauchte man ein kostenpflichtiges Abo und musste die Daten in die Cloud hochladen. Ich wollte nicht noch eine weitere Bibliothek, sondern eine, die wirklich gut funktioniert und die lokale GPU fürs Plotten nutzen kann.
Wenn man zu den Beispielen herunterscrollt, gibt es dort Plots mit sehr vielen Punkten: https://wwwtyro.github.io/candygraph/examples/dist/
https://github.com/epezent/implot
Java: https://github.com/SpaiR/imgui-java
Für Rust gibt es auch etwas:
https://www.egui.rs/#Demo
Man kann sich die Open-Plot-Demo ansehen. Im Web ließe sich das wohl per WASM kompilieren. Es sollte möglich sein, nur den Graphen in WASM zu bauen und ihn in das bestehende DOM einzubetten.
https://github.com/holoviz/datashader ist eine brauchbare Wahl im Python-Ökosystem.
ggplot2 ist hervorragend für die Datenexploration. Das war einmal ein klarer Alleinstellungsfaktor von R.
Für Dashboards bevorzuge ich eher Apache ECharts:
https://github.com/ecomfe/awesome-echarts
Wirklich großartig. Ist das eine Neuimplementierung von ggplot2 in Python?
pyggist eine schlanke Bibliothek, die die ggplot-Syntax von Python in R-ggplot2-Code umwandelt.Der Nachteil ist, dass sie nicht interaktiv ist und in R ausgeführt wird, der Vorteil ist, dass man Hadleys ggplot-Implementierung in R ausführt.
https://github.com/sirrice/pygg
Für mich ist es etwas enttäuschend, dass man ggplot einfach kopiert hat. ggplot ist nicht die endgültige Antwort auf das Design von Visualisierungsbibliotheken.
Zum Beispiel hat ggplot das Konzept von scales, die im Grunde Funktionen entsprechen. Das fügt der Bibliothek nur unnötigen konzeptionellen Ballast hinzu. Das wegzulassen wäre eine einfache Verbesserung.
Bei matplotlib komme ich dem erst nahe, wenn ich es in letzter Zeit viel benutzt habe und sogar GitHub Copilot dabeihabe.