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

Matplotlibでリアルタイムプロット中にX軸を移動させる方法

リアルタイムプロット中にMatplotlibでX軸を移動させたい場合、matplotlib.animationモジュールのFuncAnimationset_xlim()メソッドを組み合わせることで簡単に実現できます。以下に具体的な手順を示します。

実装手順

  1. 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  2. figureとサブプロットのセットを作成します。
  3. NumPyを使用してx・yのデータポイントを生成します。
  4. plot()メソッドを使ってx・yのデータポイントをプロットします。
  5. フレームごとにX軸の表示範囲を更新するanimate関数を定義し、FuncAnimationで繰り返し呼び出してアニメーションを作成します。
  6. show()メソッドで図を表示します。

サンプルコード

import matplotlib.pylab as plt
import matplotlib.animation as animation
import numpy as np

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

fig, ax = plt.subplots()

x = np.linspace(0, 15, 100)
y = np.cos(x)

ax.plot(x, y, lw=2, color='red')

def animate(frame):
    ax.set_xlim(left=0, right=frame)

ani = animation.FuncAnimation(fig, animate, frames=10)

plt.show()

コードの解説

このコードでは、まずnp.linspace(0, 15, 100)で0から15までの範囲に100個の等間隔データポイントを生成し、そのコサイン値を赤い線でプロットしています。

ポイントとなるのはanimate(frame)関数です。この関数内でax.set_xlim(left=0, right=frame)を呼び出すことで、各フレームごとにX軸の右端(最大値)がframeの値へと変化します。frames=10と指定しているため、X軸の表示範囲は0から9まで段階的に拡大していきます。

FuncAnimation(fig, animate, frames=10)は、figureに対してanimate関数を10回連続して呼び出すことでアニメーションを生成します。これにより、リアルタイムにX軸が移動していく様子を視覚的に確認できます。

実行結果

Matplotlibでリアルタイムプロット中にX軸を移動させる方法

実行すると、コサインカーブのグラフ上でX軸の表示範囲が徐々に広がっていくアニメーションが表示されます。センサーデータのストリーミング表示や時系列データの可視化など、リアルタイム描画が必要な場面で応用できるテクニックです。

  1. MatplotlibでグラフのX軸とY軸を入れ替える方法

    Matplotlibでグラフの軸(X軸とY軸)を入れ替えたい場合、subplots()メソッドを使って図(figure)を作成し、2つのサブプロットを追加する方法が便利です。1つ目のサブプロットに曲線を描画し、そのX・Yデータを抽出して、2つ目のサブプロットの曲線に設定し直すことで、軸を入れ替えたグラフを作成できます。 手順 NumPyを使って、xとyのデータポイントを作成します。 図を作成し、2つのサブプロットを追加します。 両方のサブプロットにタイトルを設定します。 plot()メソッドを使って、xとyのデータポイントをプロットします。 get_xdata()とget_ydata()を使

  2. Matplotlibで折れ線グラフをアニメーション化する方法を徹底解説

    Matplotlibでは、FuncAnimationを活用することで、折れ線グラフに動きのあるアニメーション効果を簡単に加えることができます。本記事では、基本的な手順と実際に動作するサンプルコードを交えながら、その方法をわかりやすく解説します。折れ線グラフをアニメーション化する基本手順subplots()メソッドを使用して、図(figure)とサブプロットを作成します。x軸・y軸それぞれの表示範囲(スケール)を設定します。NumPyを使って、xおよびtのデータ点を生成します。座標ベクトルからmeshgrid()で座標行列X2とT2を作成します。plot()メソッドでxとFのデータを使い、折れ線