Python
 Computer >> コンピューター >  >> プログラミング >> Python

Matplotlibのプロットを矢印キーで前後にスクロールする方法

Matplotlibで作成したグラフを、キーボードの左右の矢印キー操作で前後にスクロール表示する方法を解説します。key_press_eventを活用することで、マウス操作に頼らないインタラクティブなデータ可視化が実現できます。

実装の手順

  1. 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  2. NumPyを使ってcurr_pos(現在位置)とyのデータを作成します。
  3. figure()メソッドで新しい図を作成するか、既存の図をアクティブにします。
  4. key_press_eventイベントにキー入力処理用の関数をバインド(接続)します。
  5. add_subplot()で図にAxes(座標軸)を追加します。
  6. plot()メソッドでcurr_posとyのデータ点をプロットします。
  7. 左右の矢印キーが押されるたびに、曲線が対応する方向へ移動するようにします。
  8. show()メソッドで図を画面に表示します。

コード例

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

curr_pos = np.linspace(-10, 10, 100)
y = np.sin(curr_pos)

def key_event(e):
    global curr_pos
    if e.key == "right":
        curr_pos = curr_pos + 1
    else:
        curr_pos = curr_pos - 1
    ax.cla()
    ax.plot(curr_pos, np.sin(curr_pos))
    fig.canvas.draw()

fig = plt.figure()
fig.canvas.mpl_connect('key_press_event', key_event)

ax = fig.add_subplot(111)
ax.plot(curr_pos, y)

plt.show()

コードのポイント

  • mpl_connect():キャンバスにイベントハンドラを登録します。ここでは'key_press_event'に対してkey_event関数を紐付けています。
  • e.key:押されたキーの種類を判定します。"right"なら位置を+1、それ以外(左矢印キーなど)なら-1します。
  • ax.cla():既存のプロットをクリアしてから再描画することで、グラフの重なりを防ぎます。
  • fig.canvas.draw():変更後のデータでキャンバスを強制的に再描画し、画面を更新します。

出力結果

Matplotlibのプロットを矢印キーで前後にスクロールする方法

コードを実行すると正弦波のグラフが表示されます。この状態でキーボードの左矢印キーまたは右矢印キーを押すと、グラフが前後(左右)にスクロールし、波形がリアルタイムに移動します。

  1. Matplotlibの図に凡例を配置・整列させる方法

    Matplotlibで作成した図(フィギュア)に凡例を適切な位置に配置し、要素を整列させる方法を解説します。凡例の位置調整には bbox_to_anchor 引数を使用するのがポイントです。 手順 plot() メソッドを使って line1 と line2 の2本の線をプロットします。 legend() メソッドで図に凡例を配置します。このとき bbox_to_anchor を使って凡例の位置を指定し、ncol 引数で凡例要素を横並びに整列させます。 show() メソッドを呼び出して図を表示します。 コード例 from matplotlib import pyplot as plt pl

  2. PythonとMatplotlibで複数のプロットを1つの図に描画する方法

    Matplotlibは、データ可視化のために広く利用されている人気のPythonパッケージです。データの可視化は非常に重要なステップです。生の数値を目で追ったり複雑な計算を実行したりしなくても、データの中で何が起きているのかを直感的に把握できるようになるからです。また、定量的な洞察を聴衆に対して効果的に伝える手段としても役立ちます。Matplotlibは、データをもとに2次元のプロットを作成するために使われます。オブジェクト指向のAPIを備えており、Pythonアプリケーションへプロットを簡単に組み込むことができます。IPythonシェル、Jupyter Notebook、Spyderなどの開