3 ポイント 投稿者 GN⁺ 2023-07-16 | 1件のコメント | WhatsAppで共有
  • Lets-Plotは Grammar of Graphics の原則に基づき、PythonとKotlinで統計データの可視化を支援するマルチプラットフォームのプロットライブラリ
  • Python向け実装とKotlin向け実装を分けて提供しており、ノートブック環境からIDE、アプリ開発まで 各エコシステムのワークフロー に合わせて使える
  • Pythonではノートブックだけでなく、PyCharmIntelliJ 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

  • Kotlin

  • 地理空間可視化

    • Geocoding モジュールで空間オブジェクトを検索できる
    • すでに GeoDataFrame があれば、そのまま プロット できる
  • ツールチップと注釈

    • プロットレイヤーの tooltipannotation について、コンテンツ、値のフォーマット、見た目をカスタマイズできる

1件のコメント

 
GN⁺ 2023-07-16
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 と比べて、このプロジェクトがどうなのか気になる

    • ggplot2のように、欲しいグラフを何でも作れるほど汎用的なのか、それとも作れるグラフのスタイルや種類にかなり独自色があるのか気になる。ただ、このライブラリの一番良い点は Kotlin でも使えることかもしれない
  • R以外の言語向けggplot系ライブラリの欠点は、本家で使える膨大な数の優れたアドオンライブラリ[1]を失うことだ。個人的には、Pythonでデータ処理をたくさんやったあとRに書き出して、グラフィックスは全部そこで作っている
    統計系の人たちはグラフィックスをより重視していて、完成度を高めるのにより多くの時間をかけている感じがある。あとCopilotは学習資料が豊富なので、Rベースのggplotのセマンティクスやオプションについて本当によく助けてくれる。ggplotクローンライブラリの微妙な違いについてもそうなのかはよく分からない
    [1] https://youtu.be/7UjA_5gNvdw

    • 良い動画だ。Rが説明と可視化において追加の表現力を与えてくれることをよく示している。別のPythonプロットラッパーを学ぶくらいなら、Rを少し学ぶほうがよいかもしれない
    • CopilotがRベースのggplotのセマンティクスやオプションをよく助けてくれるのはその通りだが、こうした違いが大規模言語モデルにとって大きな障害になるとは思わない。スクリプトをある言語から別の言語に変えてみれば、大規模言語モデルがどれほどうまく一般化するか分かる。もちろん完璧ではないが
      十分な文脈を与えれば、おそらく実用的な結果を出してくれる可能性が高い
  • これも、Pythonにグラフィック文法インターフェースを提供する plotnine [0] とかなり似て見える。それでもggplotが好きなので、研究でこれを使ってみる日が楽しみだ
    ggthemesscientificplots [1]、その他のggplotライブラリをlets-plotに移植または再実装できるといいと思う
    0: https://plotnine.readthedocs.io/en/stable/
    1: https://github.com/garrettj403/SciencePlots

  • なぜ必要なのか分からない。誰かがまたひとつプロットライブラリを切実に求めていたのか?

    • 統計プロットを作れて、matplotlibベースではないというだけでも良い出発点だ。Plotlyは扱いづらく、Altairは使い勝手がいまひとつで、bokehはmatplotlibと同じ命令型スタイルなうえ、やや重い
      Seabornは良いが、依然としてmatplotlib上の漏れのある抽象化と格闘しなければならず、組み合わせが難しくなり、インタラクティブ性も得にくい。だから私はこういうものを求めている。高速でネイティブな使い心地の、優れた対話型チャートが欲しくて自分で作ろうとしたこともある。Ggplotは何を描きたいかだけに集中させてくれて、データフレームを渡せるが、これもそう見える
    • JetBrainsの新しいKotlin Notebooksで使うために作られたようだ
    • みんな求めている。代替手段にはどれも大きな欠点があるので、競争が増えることは良いことだ
  • このグラフィック文法方式でプロットを作るための、Python中心のチュートリアルやガイドはあるのだろうか? それともggplot2の本を読んで、Rの例をPythonに移し替えるべきなのだろうか?

  • すべてKotlin Multiplatformで、薄いPythonラッパーを載せているだけの構成だ。かなり驚いた

  • プロットライブラリの最大の問題は、数百万のデータポイントを即座にうまく処理できないことだった。前回のデータサイエンスのプロジェクトで主要なプロットライブラリを一通り使ってみたが、数百万ポイントを超えるとまともに動くものはなかった。
    リアルタイムで可視化してズームイン・ズームアウトできるグラフが欲しかったのだが、それがプロジェクトの難しい部分になった。ある製品だけがクラウドGPUで処理できると主張していたが、有料サブスクリプションが必要で、データをクラウドに上げる必要もあった。別のライブラリではなく、本当にうまく動いてローカルGPUをプロットに活用できるライブラリが欲しい。

  • 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 という概念がある。これはライブラリに不要な概念的な飾りを加えるだけだ。これをなくすのは簡単な改善だ。

    • ggplot にどんな欠点があろうと、matplotlib、base R、あるいは他のプロットライブラリで、私がタイピングする速度に近い速さでプロットを作れるようにしてくれたものはなかった。ggplot なら特に助けがなくてもそれができる。
      matplotlib では、最近かなり使い込んで GitHub Copilot まであって、ようやくそれに近づける。
    • scale は厳密には関数ではない。軸と凡例を描くには逆関数も必要だからだ。そして実際、scale の複雑さの大半は軸と凡例から来ている。