【爆速】GPUアクセラレーション対応!インタラクティブな描画ライブラリ「XY」が登場
Show HN: XY – A Fast, composable, GPU-accelerated interactive plotting library
Show HN: XY – A Fast, composable, GPU-accelerated interactive plotting library
「XY」は、高速かつコンポーザブル(組み合わせ可能)な設計が特徴の、GPUアクセラレーション対応のインタラクティブな描画ライブラリです。データ可視化のパフォーマンスを極限まで引き出したいエンジニアにおすすめのツールです。
matplotlibには何百年も悩まされてきたから、学術界がこういう変化を歓迎するのはわかるよ
XYはWeb向けの超高速でインタラクティブ、かつカスタマイズ可能なPython用チャートライブラリ
ほとんどのチャート作成において、GPUアクセラレーションがそこまで有意なメリットになるとは思えないな。大抵のダッシュボードは、それが重要になるほどのデータ量をレンダリングしていないし。チャートがレンダリングのボトルネックになるほど密集しているなら、それはもう情報過多で本来の役割を果たせていないだろうしね。ズーム機能があるなら大規模なデータセットも正当化できるけど、サンプリングやビューポートカリング、LOD(詳細度)制御を使えば、不必要なポイントを描画せずに済むことも多いよ...
『Chatting(チャット)』ライブラリと読み間違えて、GitHubページでめちゃくちゃ混乱したよ。
Rustで実装されてるのは最高だね。
XYを使えばアウトオブコアでデータレンダリングができるから、OpenStreetMapsの全データ(なんと107億4267万4832ノード!)も1秒以内のパンやズームで描画できるよ。オンラインでホスティングするのは少し大変だけど、ローカルなら試せるよ: https://github.com/reflex-dev/xy/tree/main/examples/osm
これは凄いな、簡単に標準ライブラリになりそう。3Dやボリュームレンダリングへの対応が待ち遠しい。
面白いね。datashaderと比べるとどう?
追記:自分の用途だと、真のインタラクティブ性が欲しいときはnapari(約1e7〜8ポイント)を使うかな。それ以外ならdatashader/holoviz、あるいは単にfast-histogramの2Dヒストグラムで十分だし。
超巨大な点群に関しては、こちらの注意点0が依然として当てはまる。どこがどれだけ密集しているかを示すことなく、密集した散布図を作られるとイライラするんだよね。
とはいえ、本当に1e10ポイントを扱えるならかなり印象的だ。
uwdataのmosaicもチェックしてみて。Observable plotの上で動くよ。
あるいはplotly-resamplerもおすすめ。これはplotly上で動作して、Rust製のパッケージtsdownsampleを使ってアンチエイリアスが効くように1ピクセルあたり4ピクセルのレベルで集計してくれる。
「Grammar of Graphics」のアプローチは本当に素晴らしい抽象化だと思うし、XYもその方向に進んでくれたら嬉しいな。
大規模可視化への面白いアプローチだね。データの削減処理をRustに寄せて、表示範囲内のデータだけをWebGLに送るっていうのは、生の数百万ポイントをブラウザに流し込むよりずっと理にかなっていると思う。リアルタイム更新のパフォーマンスはどう?もっと高速なのかな?本番環境への導入予定は何かある?
ギガバイト単位のデータを2Dキャンバスに素早く『圧縮』表示させる用途なら役に立ちそう。その取り組みは評価したい。
ただ、Edward Tufteのデータ可視化原則を読んでみるのも役立つかもしれないね。多くのグラフライブラリは、データの奥深さや複雑さを保ちつつ、重要なポイントをわかりやすく明示するという基本的な可視化原則を実装できていないことが多いから。