本記事では、Pythonの可視化ライブラリ「Altair」を用いて、宣言的にインタラクティブなグラフを作る方法を紹介します。特に、手元の環境に依存せず、Google Colab上で簡単に試せるハンズオン形式で進めていきます。
Altairとは
- Vega/Vega-Liteをバックエンドとしており、Python上で宣言的にグラフを作成できるライブラリ。
- インタラクティブな機能(範囲選択、マウスオーバーなど)をシンプルな記述で追加可能。
- 「どの軸に何を割り当てるか」を書くと、細かい描画はAltairが自動でやってくれるため、コードがスッキリしやすい。
事前準備(Google Colab上での開発環境)
1. Google Colabを開く
- Google Colabにアクセスします。
- 新規ノートブックを作成します。
2. ライブラリのインストール
- Altairは通常、Colabにプリインストールされていますが、念のため下記コマンドでバージョン確認・インストールを行うと安心です。
!pip install altair==4.2.2 # 例として特定バージョンを指定
- 他に必要であれば、
pandas
などもインストール・アップグレードしておきます。
!pip install pandas --upgrade
3. Altair表示設定
- ColabでAltairを表示する場合、
colab
向けのレンダラーを有効化する方法がおすすめです。
import altair as alt
alt.renderers.enable('colab')
- これで、インタラクティブグラフがColab上に直接表示されるようになります。
ハンズオン1:シンプルな折れ線グラフ
データ準備
まずはサンプル用に小さなデータセットを作成します。
import pandas as pd
data = pd.DataFrame({
'x': range(10),
'y': [val**2 for val in range(10)],
'category': ['A']*5 + ['B']*5
})
data
-
x
は0〜9 -
y
はx
の二乗 -
category
は前半がA、後半がB
Altairで可視化
上記データを使い、Altairで**「宣言的」**に折れ線グラフを作ってみましょう。
import altair as alt
chart = alt.Chart(data).mark_line().encode(
x='x',
y='y',
color='category'
)
chart
-
alt.Chart(data)
でデータを受け取り、.mark_line()
で線グラフを指定。 -
.encode(...)
で軸と色分けを宣言的に設定します。 - 実行すると、AとBの2種類の線が描かれた折れ線グラフが、Google Colab上で直接表示されます。
ハンズオン2:インタラクティブな範囲選択
Altairの強みは、インタラクション機能を簡単に追加できることです。ここでは、「ドラッグで範囲を選択 -> 選択範囲のみ別グラフに反映」という例を体験します。
データ準備
少しデータポイントを増やしたものを用意します。
import pandas as pd
data2 = pd.DataFrame({
'x': range(50),
'y': [val**1.5 for val in range(50)]
})
範囲選択用のオブジェクト作成
brush = alt.selection(type='interval')
-
type='interval'
とすることで、ドラッグ操作による範囲指定を可能にします。
グラフの作成
# 上段グラフ(範囲選択ができる)
upper_chart = alt.Chart(data2).mark_line().encode(
x='x',
y='y'
).add_selection(
brush # このグラフでドラッグによる範囲選択を可能に
)
# 下段グラフ(選択範囲のみ表示)
lower_chart = alt.Chart(data2).mark_line().encode(
x='x',
y='y'
).transform_filter(
brush # 上段グラフの選択範囲のみ可視化
)
# 上下グラフを縦に並べる
interactive_charts = upper_chart & lower_chart
interactive_charts
-
brush
を上段グラフに追加(.add_selection(brush)
)することで、範囲のドラッグ操作を有効化。 - 下段グラフで
.transform_filter(brush)
とすることで、「上段グラフのドラッグ操作で指定された範囲」だけが表示されるようになります。
実際に動かしてみる
- 上段グラフ上でマウスをドラッグしてみてください。選択範囲がハイライトされます。
- すると、下段グラフにその範囲のデータだけがズーム表示されます。
- インタラクションを何度でもやり直せます。
これが、Altairのインタラクティブな可視化の典型的な例です。
「宣言的」可視化のメリット
-
コードがシンプル
X軸、Y軸、色分け、インタラクションなどを単純に「宣言」するだけで可視化が可能です。 -
可読性が高い
視覚化したいデータと、その軸やスタイルが一目で分かるため、チーム開発や他者との共有もしやすいです。 -
拡張しやすい
インタラクションの種類(範囲選択・クリック選択など)を増やしても、コードの変更が少なくて済みます。 -
バックエンド(Vega/Vega-Lite)の恩恵
Web標準のVega/Vega-Liteを利用しているため、描画パフォーマンスや表現力が高く、HTMLベースでの共有が容易です。
まとめ
- Altairを使うことで、宣言的に可視化を行い、インタラクティブなグラフをシンプルなコードで実装できます。
- Google Colabなら、環境構築の手間が少なく、誰でもすぐに試すことが可能です。
- ぜひ実際に上記サンプルコードをコピー&ペーストして動かしてみて、Altairの楽しさ・使いやすさを体感してください。
参考リンク
以上、Google Colabを利用したハンズオン形式でのAltair可視化チュートリアルでした。今後は応用例として、クリック選択でデータをハイライトしたり、複数のチャートを組み合わせるなど、さまざまな可視化に挑戦してみてください。