⛰️
🖱️ インタラクティブな可視化入門:PlotlyとAltairを使ってみよう
📝 はじめに
Pythonでの可視化といえば matplotlib や seaborn が定番ですが、グラフを動かしたり、マウス操作で拡大・ホバー情報を見せたりといった「インタラクティブなグラフ」を作りたいときは、Plotly や Altair が最適です。
この記事では、これら2つのライブラリを使って、インタラクティブなグラフを作成する方法をやさしく解説します。
- インタラクティブ可視化のメリット
- Plotlyの基本とグラフ作成
- Altairの基本とグラフ作成
- Plotly vs Altair:選び方のポイント
1️⃣ インタラクティブ可視化のメリットとは?
| 特徴 | 内容 |
|---|---|
| 🔍 ホバー | 値にマウスを当てると詳細が表示される |
| 📈 ズーム | 特定の範囲をドラッグで拡大 |
| 🎛️ スライダーやドロップダウン | 条件を変えてリアルタイムに表示更新 |
| 🌐 Web対応 | ブラウザ上でそのまま公開可能 |
ビジネスダッシュボードやデータ探索にとても便利です。
2️⃣ Plotlyでインタラクティブなグラフを作る
📦 インストール
pip install plotly
📊 折れ線グラフの例
import plotly.express as px
import pandas as pd
df = pd.DataFrame({
"月": ["1月", "2月", "3月", "4月"],
"売上": [100, 120, 150, 130]
})
fig = px.line(df, x="月", y="売上", title="月別売上の推移")
fig.show()
🖥️ 実行結果

🖱️ ホバーで数値確認、ズーム、ドラッグが可能になります!
📊 散布図 + ホバー情報
df = px.data.iris() # アイリスの花データ
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species",
hover_data=['petal_width', 'petal_length'])
fig.show()
🖥️ 実行結果

📊 バブルチャート + アニメーション
gapminder = px.data.gapminder()
fig = px.scatter(
gapminder, x="gdpPercap", y="lifeExp", size="pop", color="continent",
hover_name="country", log_x=True, size_max=60,
animation_frame="year", animation_group="country"
)
fig.show()
🖥️ 実行結果

📽️ 年代ごとの推移が再生されるアニメーション付きバブルチャートです!
3️⃣ Altairで宣言的にグラフを作る
📦 インストール
pip install altair vega_datasets
📊 基本の折れ線グラフ
import altair as alt
import pandas as pd
df = pd.DataFrame({
'月': ["1月", "2月", "3月", "4月"],
'売上': [100, 120, 150, 130]
})
chart = alt.Chart(df).mark_line(point=True).encode(
x='月',
y='売上',
tooltip=['月', '売上']
).properties(title='月別売上の推移')
chart.show()
🖥️ 実行結果

📊 インタラクティブな選択+ズーム
from vega_datasets import data
source = data.cars()
brush = alt.selection_interval()
chart = alt.Chart(source).mark_point().encode(
x='Horsepower',
y='Miles_per_Gallon',
color='Origin',
tooltip=['Name', 'Horsepower', 'Miles_per_Gallon']
).add_selection(brush).properties(title="車の性能と燃費")
chart.show()
🖥️ 実行結果

➡️ 範囲をドラッグして選択できます。
4️⃣ Plotly vs Altair:どっちを使えばいい?
| 項目 | Plotly | Altair |
|---|---|---|
| 柔軟性 | ◎ 高い(複雑な可視化もOK) | ◯ 宣言的で簡潔だが柔軟性はやや低め |
| 見た目 | ◎ 洗練されたデザイン | ◯ シンプルで美しい |
| 学習コスト | △ やや高め | ◎ 初心者向き |
| Web連携 | ◎ Dashなどと組み合わせて強力 | ◯ HTML出力は可能 |
✅ 複雑なダッシュボード → Plotly
✅ シンプルでスマートなグラフ → Altair
🎯 まとめ
Pythonでインタラクティブな可視化を行うには、Plotly と Altair がおすすめです。
| ライブラリ | 特徴 |
|---|---|
| Plotly | 柔軟・高機能。アニメーションやWeb連携に強い |
| Altair | 簡潔・宣言的。データ探索や教育に最適 |
どちらもJupyter Notebook や Google Colab で使いやすく、データの可視化・共有がスムーズにできます。
株式会社ONE WEDGE
【Serverlessで世の中をもっと楽しく】 ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
Discussion