Matplotlib で代替カーソルを設定する

PythonPythonBeginner
今すぐ練習

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

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

はじめに

この実験では、Matplotlibを使用してグラフキャンバスに代替カーソルを設定する方法を説明します。代替カーソルは、Matplotlibバックエンドツールに用意されている利用可能なカーソルのいずれかにすることができます。

VMのヒント

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

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

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

必要なライブラリをインポートする

まず、必要なライブラリをインポートする必要があります。ここでは、matplotlib.pyplotmatplotlib.backend_tools を使用します。

import matplotlib.pyplot as plt
from matplotlib.backend_tools import Cursors

グラフを作成して代替カーソルを設定する

次に、グラフを作成し、ループを使って各サブプロットに代替カーソルを設定します。また、各サブプロットに使用されているカーソルを示すためのテキストも追加します。

fig, axs = plt.subplots(len(Cursors), figsize=(6, len(Cursors) + 0.5), gridspec_kw={'hspace': 0})
fig.suptitle('Hover over an Axes to see alternate Cursors')

for cursor, ax in zip(Cursors, axs):
    ax.cursor_to_use = cursor
    ax.text(0.5, 0.5, cursor.name,
            horizontalalignment='center', verticalalignment='center')
    ax.set(xticks=[], yticks=[])

マウスオーバー時にカーソルを設定する

ユーザーがサブプロットの上にマウスオーバーしたときに、代替カーソルにカーソルを設定する必要があります。これは、motion_notify_event イベントと set_cursor() 関数を使って達成します。

def hover(event):
    if fig.canvas.widgetlock.locked():
        ## Don't do anything if the zoom/pan tools have been enabled.
        return

    fig.canvas.set_cursor(
        event.inaxes.cursor_to_use if event.inaxes else Cursors.POINTER)

fig.canvas.mpl_connect('motion_notify_event', hover)

グラフを表示する

最後に、show() 関数を使ってグラフを表示します。

plt.show()

まとめ

この実験では、Matplotlibを使ってグラフキャンバス上に代替カーソルを設定する方法を学びました。グラフを作成し、各サブプロットに代替カーソルを設定し、その後、ユーザーがサブプロットの上にマウスオーバーしたときに代替カーソルにカーソルを設定しました。そして、グラフを表示しました。