@@ -1063,19 +1063,10 @@ def _overlap(ax, bboxes, get_vertices=False, exclude_texts=None):
10631063 # Collect vertices from lines (Line2D)
10641064 for handle in ax .lines :
10651065 if isinstance (handle , Line2D ):
1066- # Use original data to include points outside axes
1066+ # Use original data
10671067 xdata = handle .get_xdata ()
10681068 ydata = handle .get_ydata ()
1069- if len (xdata ) > 1 :
1070- # Interpolate between points to better detect overlap with lines
1071- x_interp = []
1072- y_interp = []
1073- for i in range (len (xdata ) - 1 ):
1074- x_interp .extend (np .linspace (xdata [i ], xdata [i + 1 ], 10 ))
1075- y_interp .extend (np .linspace (ydata [i ], ydata [i + 1 ], 10 ))
1076- data_points = np .column_stack ((x_interp , y_interp ))
1077- else :
1078- data_points = np .column_stack ((xdata , ydata ))
1069+ data_points = np .column_stack ((xdata , ydata ))
10791070 vertices_display = ax .transData .transform (data_points )
10801071 lines_display .append (vertices_display )
10811072
@@ -1089,25 +1080,7 @@ def _overlap(ax, bboxes, get_vertices=False, exclude_texts=None):
10891080 elif hasattr (handle , "get_paths" ):
10901081 # For poly collections like fill_between, use paths
10911082 for path in handle .get_paths ():
1092- if len (path .vertices ) > 1 :
1093- # Interpolate between points to better detect overlap
1094- x_interp = []
1095- y_interp = []
1096- for i in range (len (path .vertices ) - 1 ):
1097- x_interp .extend (
1098- np .linspace (
1099- path .vertices [i ][0 ], path .vertices [i + 1 ][0 ], 10
1100- )
1101- )
1102- y_interp .extend (
1103- np .linspace (
1104- path .vertices [i ][1 ], path .vertices [i + 1 ][1 ], 10
1105- )
1106- )
1107- data_points = np .column_stack ((x_interp , y_interp ))
1108- else :
1109- data_points = path .vertices
1110- vertices_display = ax .transData .transform (data_points )
1083+ vertices_display = ax .transData .transform (path .vertices )
11111084 lines_display .append (vertices_display )
11121085 elif hasattr (handle , "get_offsets" ):
11131086 # Fallback for other collections
@@ -1116,9 +1089,10 @@ def _overlap(ax, bboxes, get_vertices=False, exclude_texts=None):
11161089 lines_display .append (vertices_display )
11171090
11181091 # Also collect bboxes from collections if available
1119- if hasattr (handle , "get_datalim" ):
1120- datalim_display = handle .get_datalim (ax .transData )
1121- bboxes_display .append (datalim_display )
1092+ # Note: datalim bboxes are too broad and cause false positives for overlap detection
1093+ # if hasattr(handle, "get_datalim"):
1094+ # datalim_display = handle.get_datalim(ax.transData)
1095+ # bboxes_display.append(datalim_display)
11221096
11231097 # Collect bboxes from patches
11241098 for handle in ax .patches :
@@ -1130,25 +1104,7 @@ def _overlap(ax, bboxes, get_vertices=False, exclude_texts=None):
11301104 # Get vertices from patch path
11311105 path = handle .get_path ()
11321106 if len (path .vertices ) > 0 :
1133- if len (path .vertices ) > 1 :
1134- # Interpolate between points to better detect overlap with patch paths
1135- x_interp = []
1136- y_interp = []
1137- for i in range (len (path .vertices ) - 1 ):
1138- x_interp .extend (
1139- np .linspace (
1140- path .vertices [i ][0 ], path .vertices [i + 1 ][0 ], 10
1141- )
1142- )
1143- y_interp .extend (
1144- np .linspace (
1145- path .vertices [i ][1 ], path .vertices [i + 1 ][1 ], 10
1146- )
1147- )
1148- data_points = np .column_stack ((x_interp , y_interp ))
1149- else :
1150- data_points = path .vertices
1151- vertices_display = ax .transData .transform (data_points )
1107+ vertices_display = ax .transData .transform (path .vertices )
11521108 lines_display .append (vertices_display )
11531109
11541110 # Collect bboxes from texts (excluding specified text objects to avoid self-overlap)
0 commit comments