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

Matplotlibでテキストを動的に更新する方法をわかりやすく解説

Matplotlibでは、キーボード操作などのイベントに応じて、図の中に表示したテキストをリアルタイムに更新できます。本記事では、set_text()メソッドとイベントハンドラを組み合わせて、テキストを動的に書き換える方法を具体的なコード例とともに紹介します。

テキスト更新の基本的な手順

Matplotlibでテキストを更新(リフレッシュ)するには、以下の手順を実行します。

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • Figureオブジェクトと一連のサブプロット(Axes)を作成します。
  • ax.text()を使って、軸上にテキストを追加します。
  • キー「z」と「c」が押されたときにテキストを更新するカスタム関数を定義します。
  • その関数をkey_press_eventイベントにバインド(紐付け)します。
  • Figureを含むキャンバスを描画します。
  • テキストを含むFigureをアニメーションとして扱います。
  • 最後にshow()メソッドを呼び出して、図を画面に表示します。

サンプルコード

from matplotlib import pyplot as plt, animation

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, ax = plt.subplots()
text = ax.text(.5, .5, 'First Text')
def action(event):
    if event.key == "z":
        text.set_text("zoom")
    elif event.key == "c":
        text.set_text("cool")

fig.canvas.mpl_connect('key_press_event', action)
fig.canvas.draw()
animation = animation.ArtistAnimation(fig, [(text,)])

plt.show()

コードのポイント解説

  • text = ax.text(.5, .5, 'First Text'):座標(0.5, 0.5)の位置に初期テキスト「First Text」を配置し、その戻り値であるTextオブジェクトを変数に保持しておきます。このオブジェクトへの参照があることで、後から内容を変更できます。
  • action(event):キー入力イベントを受け取る関数です。「z」キーが押されるとテキストを「zoom」に、「c」キーが押されると「cool」に、それぞれset_text()で書き換えます。
  • mpl_connect('key_press_event', action):キーが押されるたびにaction関数が自動的に呼び出されるよう、イベントと関数を接続します。
  • animation.ArtistAnimation(fig, [(text,)]):Textオブジェクトをアーティストとして登録することで、テキストの変更が画面に正しく反映されます。

実行結果

このスクリプトを実行して表示されたウィンドウ上で「z」または「c」キーを押すと、中央に表示されていたテキストがそれぞれ「zoom」「cool」へと即座に切り替わります。

この手法は、インタラクティブなデータ可視化や、マウス・キーボード操作に連動した注釈の切り替えなど、さまざまな場面で応用できます。ぜひ実際にコードを動かして、挙動を確認してみてください。

  1. FlaskでMatplotlibのグラフを表示する方法【サンプルコード付き】

    Webアプリケーション上でグラフを動的に表示したい場合、FlaskとMatplotlibを組み合わせるのが効果的です。この記事では、Flaskアプリケーション内でMatplotlibのプロットをPNG画像としてブラウザに返す方法を、具体的な手順とサンプルコードとともにわかりやすく解説します。 実装の流れ FlaskでMatplotlibのグラフを表示するまでの基本的な手順は以下の通りです。 小さなFlaskアプリケーションを作成する カレントディレクトリに移動し、環境変数を設定してアプリを起動する$ export FLASK_APP=file.py$ flask run ブラウザで http

  2. MatplotlibでRectangle(長方形)にテキストを追加する方法

    Matplotlibで長方形(Rectangle)の中にテキストを追加したい場合、annotate()メソッドを使い、長方形の中心点にラベルを配置するのが簡単な方法です。この記事では、その具体的な手順をサンプルコードとともに解説します。実装の手順figure()メソッドを使用して、新しい図を作成するか、既存の図をアクティブにします。現在の軸に対してサブプロットを追加します。プロットに長方形を描画するために、Rectangle()クラスを使って長方形オブジェクトを作成します。作成した長方形パッチをプロットに追加します。長方形内にテキストラベルを配置するため、長方形の中心座標(cx・cy)を計算し