質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2025閲覧

matplotlibで複数の画像を表示。マウスがどの画像上にあるか判定したい。

dendendenjirou

総合スコア41

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/08/17 08:21

matplotlibを用いて複数の画像を表示しています。

マウスイベントを用いて画像処理を行おうと思っていますが
どの画像上にマウスがあるか判定し、その画像に対して処理をしたいと思っていますが
マウスがどの画像上にあるのか判定する方法が分からずに困っています。
(どのax上にあるか判定したい)

例えばmatplotlibのチュートリアルのコードを用いた場合

from __future__ import print_function import matplotlib.pyplot as plt def enter_axes(event): print('enter_axes', event.inaxes) event.inaxes.patch.set_facecolor('yellow') event.canvas.draw() def leave_axes(event): print('leave_axes', event.inaxes) event.inaxes.patch.set_facecolor('white') event.canvas.draw() def enter_figure(event): print('enter_figure', event.canvas.figure) event.canvas.figure.patch.set_facecolor('red') event.canvas.draw() def leave_figure(event): print('leave_figure', event.canvas.figure) event.canvas.figure.patch.set_facecolor('grey') event.canvas.draw() fig1 = plt.figure() fig1.suptitle('mouse hover over figure or axes to trigger events') ax1 = fig1.add_subplot(211) ax2 = fig1.add_subplot(212) fig1.canvas.mpl_connect('figure_enter_event', enter_figure) fig1.canvas.mpl_connect('figure_leave_event', leave_figure) fig1.canvas.mpl_connect('axes_enter_event', enter_axes) fig1.canvas.mpl_connect('axes_leave_event', leave_axes) plt.show()

返されるコードは以下となります。

enter_figure Figure(640x478) enter_axes AxesSubplot(0.125,0.53;0.775x0.35) leave_axes AxesSubplot(0.125,0.53;0.775x0.35) enter_axes AxesSubplot(0.125,0.11;0.775x0.35) leave_axes AxesSubplot(0.125,0.11;0.775x0.35)

座標ではなく、ax1やax2といった判定がしたいです。

どなたかご存知の方ご教授いただければ幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

event.inaxesaxのようなので以下のような感じで判別することができます。

Python

1import matplotlib.pyplot as plt 2 3def enter_axes(event): 4 print(axs[event.inaxes]) # 名称を表示 5 event.inaxes.patch.set_facecolor('yellow') 6 event.canvas.draw() 7 8def leave_axes(event): 9 print(axs[event.inaxes]) # 名称を表示 10 event.inaxes.patch.set_facecolor('white') 11 event.canvas.draw() 12 13fig1 = plt.figure() 14fig1.suptitle('mouse hover over figure or axes to trigger events') 15ax1 = fig1.add_subplot(211) 16ax2 = fig1.add_subplot(212) 17 18axs = {ax1:'ax1', ax2:'ax2'} # とりあえず辞書で 19 20fig1.canvas.mpl_connect('axes_enter_event', enter_axes) 21fig1.canvas.mpl_connect('axes_leave_event', leave_axes) 22 23plt.show()

投稿2020/08/17 09:23

can110

総合スコア38341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dendendenjirou

2020/08/17 09:58

ありがとうございます!! まさに、求めていた答えです。感激です。 この問題に1日費やしてしまいました。 本当に、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問