Matplotlib イベントハンドリングチュートリアル

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験は、PythonのMatplotlibで、あるウィンドウ内のイベント(たとえば、マウスの押下)を別のグラフィックウィンドウに接続する方法についての手順を追ったチュートリアルです。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebookを使って練習します。

Jupyter Notebookの読み込みには数秒かかる場合があります。Jupyter Notebookの制限により、操作の検証を自動化することはできません。

学習中に問題が発生した場合は、Labbyにお問い合わせください。セッション終了後にフィードバックを提供してください。すぐに問題を解決いたします。

環境をセットアップする

まず、Python環境をセットアップし、必要なライブラリをインポートする必要があります。

import matplotlib.pyplot as plt
import numpy as np

## Fixing random state for reproducibility
np.random.seed(19680801)

figsrc, axsrc = plt.subplots(figsize=(3.7, 3.7))
figzoom, axzoom = plt.subplots(figsize=(3.7, 3.7))
axsrc.set(xlim=(0, 1), ylim=(0, 1), autoscale_on=False,
          title='Click to zoom')
axzoom.set(xlim=(0.45, 0.55), ylim=(0.4, 0.6), autoscale_on=False,
           title='Zoom window')

x, y, s, c = np.random.rand(4, 200)
s *= 200

axsrc.scatter(x, y, s, c)
axzoom.scatter(x, y, s, c)

on_press関数を定義する

次に、on_pressと呼ばれる関数を定義します。この関数は、最初のウィンドウ内でのマウスクリックの位置に基づいて、2番目のウィンドウのxとyの範囲を調整します。

def on_press(event):
    if event.button!= 1:
        return
    x, y = event.xdata, event.ydata
    axzoom.set_xlim(x - 0.1, x + 0.1)
    axzoom.set_ylim(y - 0.1, y + 0.1)
    figzoom.canvas.draw()

イベントを関数に接続する

次に、最初のウィンドウ内のボタン押下イベントを、先ほど定義したon_press関数に接続します。

figsrc.canvas.mpl_connect('button_press_event', on_press)

グラフを表示する

最後に、グラフをユーザーに表示します。

plt.show()

まとめ

この実験では、PythonのMatplotlibを使って、1つのウィンドウ内のイベント(例えば、マウスの押下)を別のグラフウィンドウに接続する方法を学びました。また、最初のウィンドウ内のマウスクリックの位置に基づいて2番目のウィンドウの範囲を調整する関数を定義する方法と、ボタン押下イベントをこの関数に接続する方法も学びました。