Lets-Plot: 統計データのためのオープンソース・プロットライブラリ
(lets-plot.org)- Lets-Plotは Grammar of Graphics の原則に基づき、PythonとKotlinで統計データの可視化を支援するマルチプラットフォームのプロットライブラリ
- Python向け実装とKotlin向け実装を分けて提供しており、ノートブック環境からIDE、アプリ開発まで 各エコシステムのワークフロー に合わせて使える
- Pythonではノートブックだけでなく、PyCharm と IntelliJ IDEA のSciViewでもプロットを確認できる
- KotlinではKotlinノートブックから Compose-Multiplatformアプリ まで、可視化のユースケースを想定している
- ジオコーディング、GeoDataFrameのプロット、ツールチップ・注釈のカスタマイズを提供し、空間データ やインタラクティブなプロットの構成にも活用できる
Lets-Plot 概要
- Lets-Plotは Grammar of Graphics の原則に基づくマルチプラットフォームのプロットライブラリ
- ggplot2とGrammar of Graphicsをあわせて学びたい場合は、Hadley Wickhamの “ggplot2: Elegant Graphics for Data Analysis” が参考資料として案内されている
- スタートガイドとサンプルは以下で提供されている
対応プラットフォームと主な機能
-
Python
- Grammar of Graphics for Python として提供されるPython可視化ライブラリ
- Pythonノートブックで利用できる
- PyCharmとIntelliJ IDEA IDEのSciView でもプロットを確認できる
-
Kotlin
- Grammar of Graphics for Kotlin として提供されるKotlinマルチプラットフォーム可視化ライブラリ
- Kotlinノートブックから Compose-Multiplatformアプリ まで、Kotlinエコシステムのユースケースを対象としている
-
地理空間可視化
-
ツールチップと注釈
- プロットレイヤーの tooltip と annotation について、コンテンツ、値のフォーマット、見た目をカスタマイズできる
1件のコメント
Hacker Newsのコメント
すばらしい。ggplot2風のグラフィック文法に基づいているようだ。サンプルはここで見られる: https://lets-plot.org/pages/charts.html
データプロットもかなり良さそう: https://lets-plot.org/pages/charts.html#discrete-icon-discre...
分布プロットも同様: https://lets-plot.org/pages/charts.html#visualization-of-dis...
Pythonのggplot2風プロットライブラリである
plotnineと比べて、このプロジェクトがどうなのか気になるR以外の言語向けggplot系ライブラリの欠点は、本家で使える膨大な数の優れたアドオンライブラリ[1]を失うことだ。個人的には、Pythonでデータ処理をたくさんやったあとRに書き出して、グラフィックスは全部そこで作っている
統計系の人たちはグラフィックスをより重視していて、完成度を高めるのにより多くの時間をかけている感じがある。あとCopilotは学習資料が豊富なので、Rベースのggplotのセマンティクスやオプションについて本当によく助けてくれる。ggplotクローンライブラリの微妙な違いについてもそうなのかはよく分からない
[1] https://youtu.be/7UjA_5gNvdw
十分な文脈を与えれば、おそらく実用的な結果を出してくれる可能性が高い
これも、Pythonにグラフィック文法インターフェースを提供する
plotnine[0] とかなり似て見える。それでもggplotが好きなので、研究でこれを使ってみる日が楽しみだggthemes、scientificplots[1]、その他のggplotライブラリをlets-plotに移植または再実装できるといいと思う0: https://plotnine.readthedocs.io/en/stable/
1: https://github.com/garrettj403/SciencePlots
なぜ必要なのか分からない。誰かがまたひとつプロットライブラリを切実に求めていたのか?
Seabornは良いが、依然としてmatplotlib上の漏れのある抽象化と格闘しなければならず、組み合わせが難しくなり、インタラクティブ性も得にくい。だから私はこういうものを求めている。高速でネイティブな使い心地の、優れた対話型チャートが欲しくて自分で作ろうとしたこともある。Ggplotは何を描きたいかだけに集中させてくれて、データフレームを渡せるが、これもそう見える
このグラフィック文法方式でプロットを作るための、Python中心のチュートリアルやガイドはあるのだろうか? それともggplot2の本を読んで、Rの例をPythonに移し替えるべきなのだろうか?
https://vega.github.io/vega/docs/
すべてKotlin Multiplatformで、薄いPythonラッパーを載せているだけの構成だ。かなり驚いた
プロットライブラリの最大の問題は、数百万のデータポイントを即座にうまく処理できないことだった。前回のデータサイエンスのプロジェクトで主要なプロットライブラリを一通り使ってみたが、数百万ポイントを超えるとまともに動くものはなかった。
リアルタイムで可視化してズームイン・ズームアウトできるグラフが欲しかったのだが、それがプロジェクトの難しい部分になった。ある製品だけがクラウドGPUで処理できると主張していたが、有料サブスクリプションが必要で、データをクラウドに上げる必要もあった。別のライブラリではなく、本当にうまく動いてローカルGPUをプロットに活用できるライブラリが欲しい。
examples の方まで下がると、点の多いプロットがある: https://wwwtyro.github.io/candygraph/examples/dist/
https://github.com/epezent/implot
Java: https://github.com/SpaiR/imgui-java
Rust 版もある:
https://www.egui.rs/#Demo
Open Plot デモを見ればよい。Web では WASM にコンパイルすればよさそうだ。グラフだけを WASM で作って、既存の DOM に埋め込めそう。
https://github.com/holoviz/datashader は Python エコシステムでは悪くない選択肢。
ggplot2 はデータ探索に素晴らしい。かつては R の際立った強みだった。
ダッシュボードには Apache ECharts の方を好む:
https://github.com/ecomfe/awesome-echarts
本当にすごい。これは Python で ggplot2 を再実装したものなのか?
pyggは Python の ggplot 文法を R の ggplot2 コードに変換する軽量ライブラリだ。欠点はインタラクティブではなく R 上で実行されること、利点は Hadley の R ggplot 実装を実行すること。
https://github.com/sirrice/pygg
私としては、ggplot をそのまままねた点は少し残念に思う。ggplot は可視化ライブラリ設計の最終回答ではない。
たとえば ggplot には、厳密には関数に相当する scale という概念がある。これはライブラリに不要な概念的な飾りを加えるだけだ。これをなくすのは簡単な改善だ。
matplotlib では、最近かなり使い込んで GitHub Copilot まであって、ようやくそれに近づける。