0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonでプロットの対話性を向上させる方法

Posted at

今回行ったこと

  • 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 列に基づいてデータポイントが自動で色分けされ、視覚的にわかりやすくなります。
    画面収録 2025-01-14 15.17.12.gif

カスタマイズ例

  1. 線のスタイルを変更
    各曲線の線の種類(点線、破線など)を変更し、デザインを調整できます。

    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()
    
  2. ホバー情報をカスタマイズ
    ユーザーに必要な情報だけをホバー表示するように設定できます。

    fig = px.line(
    df,
    x='x',
    y='y',
    color='category',
    hover_data={'x': True, 'y': True, 'category': False}  # categoryはホバーに表示しない
    )
    fig.show()
    
  3. タイトルとラベルの翻訳
    日本語のタイトルやラベルでグラフをわかりやすくできます。

    fig.update_layout(
    title='インタラクティブなサイン波のプロット',
    xaxis_title='X軸の値',
    yaxis_title='Y軸の値'
    )
    fig.show()
    

実用例

  • データ探索
    大量のデータを可視化して、パターンや傾向を発見できます。特に時系列やカテゴリ別データの分析に有用です。

  • プレゼンテーション資料
    視覚的に訴えるだけでなく、リアルタイムでデータを探索できるインタラクティブなグラフを組み込むことで、説得力を高められます。

  • 教育用途
    データサイエンスや統計学の学習において、動的なビジュアライゼーションは学習者の理解を深めます。


インタラクティブなグラフを使えば、データの「見やすさ」だけでなく、深い理解を得る手助けができます。ぜひお試しください!

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?