はじめに
この実験では、Matplotlib を使用してグラフキャンバスに代替カーソルを設定する方法を説明します。代替カーソルは、Matplotlib バックエンドツールに用意されている利用可能なカーソルのいずれかにすることができます。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
場合によっては、Jupyter Notebook が読み込み終わるまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題があった場合は、Labby にお問い合わせください。セッション終了後にフィードバックを提供してください。すぐに問題を解決いたします。
必要なライブラリをインポートする
まず、必要なライブラリをインポートする必要があります。ここでは、matplotlib.pyplot と matplotlib.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 を使ってグラフキャンバス上に代替カーソルを設定する方法を学びました。グラフを作成し、各サブプロットに代替カーソルを設定し、その後、ユーザーがサブプロットの上にマウスオーバーしたときに代替カーソルにカーソルを設定しました。そして、グラフを表示しました。