diff --git a/lib/matplotlib/widgets.py b/lib/matplotlib/widgets.py index 8f7d27d4bc86..9e7d5015bf16 100644 --- a/lib/matplotlib/widgets.py +++ b/lib/matplotlib/widgets.py @@ -1058,11 +1058,14 @@ def _clicked(self, event): return xy = self.ax.transAxes.inverted().transform_point((event.x, event.y)) pclicked = np.array([xy[0], xy[1]]) + distances = {} for i, (p, t) in enumerate(zip(self.circles, self.labels)): if (t.get_window_extent().contains(event.x, event.y) or np.linalg.norm(pclicked - p.center) < p.radius): - self.set_active(i) - break + distances[i] = np.linalg.norm(pclicked - p.center) + if len(distances) > 0: + closest = min(distances, key=distances.get) + self.set_active(closest) def set_active(self, index): """