@@ -333,13 +333,6 @@ def plot(self,
333
333
label_rectangle_painter = Rectangle ()
334
334
label_rectangle_left_center_pts , label_rectangle_right_center_pts = [],[]
335
335
for k ,v in coordinates_dict .items ():
336
- # get left and right coordinates for label rectangles
337
- label_rectangle_left_coordinate = (v [0 ]- space * 0.8 , v [1 ])
338
- label_rectangle_right_coordinate = (v [0 ] + space * 0.8 , v [1 ])
339
-
340
- label_rectangle_left_center_pts .append (label_rectangle_left_coordinate )
341
- label_rectangle_right_center_pts .append (label_rectangle_right_coordinate )
342
-
343
336
344
337
# get width for label rectangles by counting the number of observations for each value
345
338
@@ -349,6 +342,26 @@ def plot(self,
349
342
label_rectangle_width = bar * num_obv
350
343
if self .min_bar_width and label_rectangle_width <= self .min_bar_width :
351
344
label_rectangle_width = self .min_bar_width
345
+
346
+ # get left and right coordinates for label rectangles
347
+ # add space for very thick label rectangles
348
+ half_label_rectangle_width = label_rectangle_width / 2
349
+ if v [1 ] - half_label_rectangle_width < 0 :
350
+ adjust_value = half_label_rectangle_width - v [1 ]
351
+ label_rectangle_left_coordinate = (v [0 ]- space * 0.8 , v [1 ]+ adjust_value )
352
+ label_rectangle_right_coordinate = (v [0 ] + space * 0.8 , v [1 ]+ adjust_value )
353
+ elif v [1 ] + half_label_rectangle_width > self .max_y_range :
354
+ adjust_value = half_label_rectangle_width + v [1 ] - self .max_y_range
355
+ label_rectangle_left_coordinate = (v [0 ]- space * 0.8 , v [1 ]- adjust_value )
356
+ label_rectangle_right_coordinate = (v [0 ] + space * 0.8 , v [1 ]- adjust_value )
357
+ else :
358
+ label_rectangle_left_coordinate = (v [0 ]- space * 0.8 , v [1 ])
359
+ label_rectangle_right_coordinate = (v [0 ] + space * 0.8 , v [1 ])
360
+
361
+ label_rectangle_left_center_pts .append (label_rectangle_left_coordinate )
362
+ label_rectangle_right_center_pts .append (label_rectangle_right_coordinate )
363
+
364
+
352
365
353
366
label_rectangle_widths .append (label_rectangle_width )
354
367
@@ -501,6 +514,7 @@ def _list_labels(self, ax, figsize_y, figsize_x, label):
501
514
edge_scale = 10
502
515
y_range = scale * figsize_y - self .missing_label_space * scale if self .missing else scale * figsize_y
503
516
x_range = scale * figsize_x
517
+ self .max_y_range , self .max_x_range = scale * figsize_y , scale * figsize_x
504
518
edge_x_range = x_range / edge_scale
505
519
edge_y_range = y_range / edge_scale
506
520
y_start = edge_y_range + self .missing_label_space * scale if self .missing else edge_y_range
0 commit comments