From 35fff059cd15b5f1b59476f7773ff401336e05f8 Mon Sep 17 00:00:00 2001 From: dementedhedgehog Date: Thu, 1 Feb 2024 11:37:45 +1000 Subject: [PATCH] Added a few style settings to control the offset labels have from their points when that distance is dependent on font size. Bar and Line are the only types that this makes sense for I believe? --- pygal/graph/bar.py | 8 ++++---- pygal/graph/line.py | 6 ++++-- pygal/style.py | 7 +++++++ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/pygal/graph/bar.py b/pygal/graph/bar.py index d1897b5f..846b02a8 100644 --- a/pygal/graph/bar.py +++ b/pygal/graph/bar.py @@ -84,18 +84,18 @@ def _tooltip_and_print_values( if self.print_values_position == 'top': if self.horizontal: - x = x_bottom + sign * self.style.value_font_size / 2 + x = x_bottom + sign * self.style.x_value_offset * self.style.value_font_size / 2 y = y_center else: x = x_center - y = y_bottom - sign * self.style.value_font_size / 2 + y = y_bottom - sign * self.style.y_value_offset * self.style.value_font_size / 2 elif self.print_values_position == 'bottom': if self.horizontal: - x = x_top + sign * self.style.value_font_size / 2 + x = x_top + sign * self.style.x_value_offset * self.style.value_font_size / 2 y = y_center else: x = x_center - y = y_top - sign * self.style.value_font_size / 2 + y = y_top - sign * self.style.y_value_offset * self.style.value_font_size / 2 else: x = x_center y = y_center diff --git a/pygal/graph/line.py b/pygal/graph/line.py index ff9e4cdd..e68c1445 100644 --- a/pygal/graph/line.py +++ b/pygal/graph/line.py @@ -134,8 +134,10 @@ def line(self, serie, rescale=False): dots, val, x, y, xlabel=self._get_x_label(i) ) self._static_value( - serie_node, val, x + self.style.value_font_size, - y + self.style.value_font_size, metadata + serie_node, val, + x + self.style.x_value_offset * self.style.value_font_size, + y + self.style.y_value_offset * self.style.value_font_size, + metadata ) if serie.stroke: diff --git a/pygal/style.py b/pygal/style.py index 9b4b3914..461bc05a 100644 --- a/pygal/style.py +++ b/pygal/style.py @@ -73,6 +73,13 @@ class Style(object): dot_opacity = '1' + # These values modify the distance from a point to its static label, + # e.g. 1.0 is the default distance, 0.5 halves the distance from + # a point to its label, 2.0 doubles the distance. + value_offset = 1.0 + x_value_offset = value_offset + y_value_offset = value_offset + transition = '150ms' colors = ( '#F44336', # 0