@@ -3015,25 +3015,26 @@ def _nonrect(self, x):
3015
3015
return not isinstance (x , Rectangle )
3016
3016
3017
3017
def _tooltip_list (self , event , hover ):
3018
- import matplotlib .pyplot as plt
3019
- lines = plt .gca ().get_lines ()
3020
- num_of_points = 0
3021
- for line in lines :
3022
- num_of_points += 1
3023
- if num_of_points >= len (hover ):
3018
+ lines = self .canvas .figure .gca ().get_lines ()[0 ]
3019
+ coor_data = list (zip (lines .get_xdata (), lines .get_ydata ()))
3020
+
3021
+ if len (coor_data ) != len (hover ):
3024
3022
raise ValueError ("""Number of data points
3025
- does not match up with number of labels""" )
3023
+ does not match up with number of labels""" )
3026
3024
else :
3027
- mouse_x = event .xdata
3028
- mouse_y = event .ydata
3029
- for line in lines :
3030
- x_data = line .get_xdata ()
3031
- y_data = line .get_ydata ()
3032
- for i in range (len (x_data )):
3033
- distance = ((event .xdata - x_data [i ])** 2
3034
- + (event .ydata - y_data [i ])** 2 )** 0.5
3035
- if distance < 0.05 :
3036
- return "Data Label: " + hover [i ]
3025
+ distances = []
3026
+ for a in coor_data :
3027
+ distances .append (((event .xdata - a [0 ])** 2 +
3028
+ (event .ydata - a [1 ])** 2 )** 0.5 )
3029
+ if (min (distances ) < 0.05 ):
3030
+ return f"Data Label: { hover [distances .index (min (distances ))]} "
3031
+
3032
+ def _tooltip_dict (self , event , hover ):
3033
+ distances = {}
3034
+ for a in hover .keys ():
3035
+ distances [a ] = ((event .xdata - a [0 ])** 2 + (event .ydata - a [1 ])** 2 )** 0.5
3036
+ if (min (distances .values ()) < 0.05 ):
3037
+ return f"Data Label: { hover [min (distances , key = distances .get )]} "
3037
3038
3038
3039
def mouse_move (self , event ):
3039
3040
self ._update_cursor (event )
@@ -3050,6 +3051,8 @@ def mouse_move(self, event):
3050
3051
self .set_hover_message (hover (event ))
3051
3052
elif type (hover ) == list :
3052
3053
self .set_hover_message (self ._tooltip_list (event , hover ))
3054
+ elif type (hover ) == dict :
3055
+ self .set_hover_message (self ._tooltip_dict (event , hover ))
3053
3056
else :
3054
3057
self .set_hover_message (self ._mouse_event_to_message (event ))
3055
3058
else :
0 commit comments