teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

表現を修正

2021/09/09 01:19

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -9,7 +9,8 @@
9
9
  +plt.scatter(x, y, picker=True, pickradius=2.5)
10
10
  ```
11
11
 
12
- `pickradius`を指定すると、各ポイントを中心とする、指定した半径の円の内部をクリックしたときに`pick_event`を発生させます。
12
+ `pickradius`を指定すると、各ポイントを中心とする、`pick_event`を発生させる円の半径を変更できます。
13
+ 設定しなくてもそれなりの大きさになっていますが、ちょっと広めだったので、ここではScatterの円マーカーの大きさ(面積)の初期値20に対応する、おおよその半径2.5を設定しています。
13
14
 
14
15
  あとは、紐付けた関数`click`の内部で、
15
16
 
@@ -23,4 +24,4 @@
23
24
  print('clicked object')
24
25
  ```
25
26
 
26
- のように、`event`オブジェクトを使って、クリックした点(複数場合もある)の情報を得ることができます。
27
+ のように、`event`オブジェクトを使って、クリックした点の情報(インデックスや座標など)を得ることができます。なお、マーカーが重なっているような場合は、複数の点のインデックスが得られます。

1

補足を追加

2021/09/09 01:19

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -1,5 +1,7 @@
1
1
  `pick_event`は、対象となるオブジェクトの`picker`プロパティが`None`の場合には発生しません。
2
2
 
3
+ [Pick Event Demo — Matplotlib 3.4.3 documentation](https://matplotlib.org/stable/gallery/event_handling/pick_event_demo.html)
4
+
3
5
  `picker`プロパティの初期値は`None`なので、利用者が`True`に変更してください。例えば、Scatterを生成するときに、オプション引数で指定します。
4
6
 
5
7
  ```diff