3 Punkte von GN⁺ 2023-07-16 | 1 Kommentare | Auf WhatsApp teilen
  • 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

1 Kommentare

 
GN⁺ 2023-07-16
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 plotnine schlägt, der Python-Plotting-Bibliothek im ggplot2-Stil

    • Ich frage mich, ob ggplot2 allgemein genug ist, um wirklich jeden gewünschten Graphen zu erstellen, oder ob es einen starken eigenen Stil hat, was die Art oder die Typen von Graphen angeht, die man damit erstellen kann. Der beste Punkt an dieser Bibliothek könnte allerdings sein, dass sie auch in Kotlin verwendet werden kann
  • Der 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

    • Gutes Video. Es zeigt gut, dass R bei Erklärungen und Visualisierung zusätzliche Ausdrucksstärke bietet. Vielleicht ist es besser, ein wenig R zu lernen, als noch einen weiteren Python-Plotting-Wrapper zu lernen
    • Dass Copilot bei R-basierten ggplot-Semantiken und -Optionen gut hilft, stimmt, aber ich glaube nicht, dass diese Unterschiede für große Sprachmodelle ein großes Hindernis darstellen. Wenn man Skripte von einer Sprache in eine andere umwandelt, sieht man, wie gut große Sprachmodelle verallgemeinern, auch wenn es natürlich nicht perfekt ist
      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 kann
    Es wäre schön, wenn sich ggthemes, scientificplots [1] und andere ggplot-Bibliotheken nach lets-plot portieren oder dafür neu implementieren ließen
    0: 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?

    • Schon allein die Tatsache, dass man damit statistische Plots erstellen kann und sie nicht auf matplotlib basiert, ist ein guter Anfang. Plotly ist hakelig, Altair hat keine besonders gute Usability, und bokeh ist wie matplotlib imperativ aufgebaut und außerdem etwas schwergewichtig
      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
    • Es sieht so aus, als wäre es für die neuen Kotlin Notebooks von JetBrains gemacht worden
    • Jeder will das. Die Alternativen haben alle große Nachteile, daher ist mehr Wettbewerb gut
  • 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?

  • 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.

  • 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? pygg ist 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.

    • Welche Mängel ggplot auch haben mag: Weder matplotlib noch base R noch irgendeine andere Plot-Bibliothek hat es mir ermöglicht, Plots auch nur annähernd so schnell zu erstellen, wie ich tippen kann. Mit ggplot geht das praktisch ohne Hilfe.
      Bei matplotlib komme ich dem erst nahe, wenn ich es in letzter Zeit viel benutzt habe und sogar GitHub Copilot dabeihabe.
    • scale ist nicht exakt eine Funktion, weil man zum Zeichnen von Achsen und Legenden auch eine Umkehrfunktion braucht. Und tatsächlich stammt der Großteil der Komplexität von scales aus Achsen und Legenden.