今回行ったこと
-
plotly
ライブラリを使って、インタラクティブな散布図を作成。 - ズーム、ホバー情報表示、データポイントの選択が可能な対話型グラフを実現。
- Python コードだけで高品質なビジュアライゼーションを生成。
私の環境
- Python: 3.10.9
- plotly: 5.15.0
- numpy: 1.23.5
- pandas: 1.5.3
インタラクティブなプロットの概要
plotly
を使用すると、対話型グラフを簡単に作成できます。ユーザーはマウス操作で以下のような操作が可能です:
- ズームイン・ズームアウト
- データポイントにホバーして詳細を表示
- 特定のデータを選択・強調表示
これにより、データを深く探索しやすくなります。
サンプルコード
以下は、カテゴリ別のデータをインタラクティブにプロットする例です。
import numpy as np
import pandas as pd
import plotly.express as px
# データ生成
x = np.linspace(0, 2 * np.pi, 100) # X軸の値
df = pd.DataFrame({
'x': np.tile(x, 3), # xの値を3つの曲線で共通化
'y': np.concatenate([np.sin(x), np.sin(2 * x), np.sin(3 * x)]), # 各曲線のy値
'category': ['sin(x)', 'sin(2x)', 'sin(3x)'] * len(x) # カテゴリを指定
})
# インタラクティブな線グラフを作成
fig = px.line(
df,
x='x',
y='y',
color='category',
title='Interactive Sin Curves',
labels={'x': 'X軸', 'y': 'Y軸', 'category': '関数'}
)
# グラフを表示
fig.show()
実行結果
以下のコードを実行すると、次のようなインタラクティブな散布図が生成されます。
- ズーム可能: グラフの特定の領域をマウスでドラッグしてズームインできます。
- ホバー情報表示: グラフ上の任意の点にマウスを合わせると、x、y、および関数の名前(例: sin(x))が表示されます。
-
カテゴリ別の色分け:
category
列に基づいてデータポイントが自動で色分けされ、視覚的にわかりやすくなります。
カスタマイズ例
-
線のスタイルを変更
各曲線の線の種類(点線、破線など)を変更し、デザインを調整できます。fig = px.line( df, x='x', y='y', color='category', line_dash='category', # 線の種類をカテゴリごとに変更 title='Styled Sin Curves' ) fig.update_traces(line=dict(width=2)) # 線の太さを調整 fig.show()
-
ホバー情報をカスタマイズ
ユーザーに必要な情報だけをホバー表示するように設定できます。fig = px.line( df, x='x', y='y', color='category', hover_data={'x': True, 'y': True, 'category': False} # categoryはホバーに表示しない ) fig.show()
-
タイトルとラベルの翻訳
日本語のタイトルやラベルでグラフをわかりやすくできます。fig.update_layout( title='インタラクティブなサイン波のプロット', xaxis_title='X軸の値', yaxis_title='Y軸の値' ) fig.show()
実用例
-
データ探索
大量のデータを可視化して、パターンや傾向を発見できます。特に時系列やカテゴリ別データの分析に有用です。 -
プレゼンテーション資料
視覚的に訴えるだけでなく、リアルタイムでデータを探索できるインタラクティブなグラフを組み込むことで、説得力を高められます。 -
教育用途
データサイエンスや統計学の学習において、動的なビジュアライゼーションは学習者の理解を深めます。
インタラクティブなグラフを使えば、データの「見やすさ」だけでなく、深い理解を得る手助けができます。ぜひお試しください!