Skip to content

Commit c79061e

Browse files
authored
arrange space for label rectangles
1 parent 16ed1ec commit c79061e

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

hammock/hammock.py

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -333,13 +333,6 @@ def plot(self,
333333
label_rectangle_painter = Rectangle()
334334
label_rectangle_left_center_pts, label_rectangle_right_center_pts = [],[]
335335
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-
343336

344337
# get width for label rectangles by counting the number of observations for each value
345338

@@ -349,6 +342,26 @@ def plot(self,
349342
label_rectangle_width = bar * num_obv
350343
if self.min_bar_width and label_rectangle_width <= self.min_bar_width:
351344
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+
352365

353366
label_rectangle_widths.append(label_rectangle_width)
354367

@@ -501,6 +514,7 @@ def _list_labels(self, ax, figsize_y, figsize_x, label):
501514
edge_scale = 10
502515
y_range = scale * figsize_y - self.missing_label_space * scale if self.missing else scale * figsize_y
503516
x_range = scale * figsize_x
517+
self.max_y_range, self.max_x_range = scale * figsize_y, scale * figsize_x
504518
edge_x_range = x_range / edge_scale
505519
edge_y_range = y_range / edge_scale
506520
y_start = edge_y_range + self.missing_label_space * scale if self.missing else edge_y_range

0 commit comments

Comments
 (0)