ggsql: SQLのためのグラフィックス文法
概要
ggsqlはSQL構文ベースのグラフィックス文法を実装した新しい可視化ツール。
QuartoやJupyterなどで利用可能、SQLユーザー向けの直感的な可視化体験を提供。
VISUALIZE/DRAW/PLACE/SCALE/LABELなどの宣言的な構文で柔軟にグラフ作成。
SQLクエリと可視化クエリをシームレスに連携可能。
構造化・拡張性・再現性に優れる点が特徴。
ggsqlのαリリース発表
- ggsqlはSQL構文でグラフィックス文法を実装した可視化ツール
- Quarto、Jupyter notebooks、Positron、VS Codeなどで利用可能
- SQLユーザーが直感的に扱える宣言的・構造的な可視化構文を提供
- VISUALIZE句でデータと視覚要素のマッピングを開始
- DRAW句でグラフレイヤーを追加、PLACE句で注釈やテキストを配置
- SCALE句で色や軸などのスケール変換を管理
- LABEL句でタイトルや軸ラベルなどのテキストを設定
- SQLクエリの結果を直接可視化クエリに流用可能、データ加工から可視化まで一貫操作
- 拡張性と再利用性に優れる構文設計
- コードが自己記述的であり、将来的なAI支援にも親和性
基本的な使用例
- 散布図の作成例(penguinsデータセット使用)
VISUALIZE bill_len AS x, bill_dep AS y FROM ggsql:penguins DRAW point
- 色分けの追加
VISUALIZE bill_len AS x, bill_dep AS y, species AS color FROM ggsql:penguins DRAW point
- 回帰線レイヤーの追加
DRAW smoothを追加することで、種ごとの回帰線を重ね描き
- 棒グラフへの切り替えもマッピング変更のみで対応
VISUALIZE island AS x, species AS color FROM ggsql:penguins DRAW bar
完全な例と構文解説
- SQLクエリと可視化クエリを1つのスクリプトで連結
- SQL部分:データ抽出・加工
- VISUALIZE以降:可視化設定
- DRAWでヒストグラムや点・線など複数レイヤーを追加
- PLACEで平均値ラインや注釈テキストを配置
- SCALEで色や軸の変換・パレット指定
- LABELでタイトルやサブタイトル、軸ラベルを指定
- 各レイヤーは複数の要素を一括で描画可能
- データが整形済みの場合はVISUALIZE句のみでも可視化可能
構造的・自己記述的な可視化の利点
- コードの可読性・再現性・拡張性が高い
- ggplot2と同様の構造で、長期的な進化やLLMとの親和性も高い
- レイヤーやマッピングの追加・変更・削除が容易
- 例:箱ひげ図からジッター付き散布図、バイオリンプロットへの切り替えも構文の差分のみ
ggsql開発の動機
- SQLユーザーがデータ可視化を直感的に行える環境の整備
- SQLとグラフィックス文法の相性の良さを活かした設計
- RやPythonを使わずに強力なコードベース可視化を実現
- LLM(大規模言語モデル)との連携を見据えた宣言的構文
- ggplot2の18年にわたる知見を新しい基盤に応用
SQLユーザーへのアプローチ
- SQLのみで分析を行うユーザー層向けの新しい可視化体験
- データをエクスポートせずに一貫した分析・可視化フローを実現
- GUIベースBIツールの再現性の低さや既存SQL可視化ツールの機能不足を解消
- Quartoなどコードベースのレポート生成・共有エコシステムへの橋渡し
宣言的データ加工・宣言的可視化
- SQLは宣言的・構造的なデータ操作言語
- グラフィックス文法も宣言的・モジュラー構造が特徴
- 両者の親和性を活かし、強力かつ直感的な可視化ツールを提供
このように、ggsqlはSQLユーザーのための新しい可視化体験を提供し、構造化・拡張性・再現性に優れたコードベースの可視化を実現します。