From aca359e40bd07c1d60a2de8fbed45e47da1bfe63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=BF=8A?= Date: Wed, 24 Jun 2015 18:37:04 +0800 Subject: [PATCH] Add _add_data_label function to Bar chart if show_data_labels is set True,_add_data_label will be called. --- pygal/graph/bar.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pygal/graph/bar.py b/pygal/graph/bar.py index 18ad4b5..9f1c9fb 100644 --- a/pygal/graph/bar.py +++ b/pygal/graph/bar.py @@ -86,6 +86,9 @@ class Bar(Graph): bar, val, x_center, y_center, classes="centered") self._static_value(serie_node, val, x_center, y_center) + if self.show_data_labels: + self._add_data_label(serie, bar, val, x, y, self.zero) + def _compute(self): if self._min: self._box.ymin = min(self._min, self.zero) @@ -135,3 +138,18 @@ class Bar(Graph): self.bar(serie) for serie in self.secondary_series: self.bar(serie, True) + + def _add_data_label(self, serie, node, value, x, y, zero): + width = (self.view.x(1) - self.view.x(0)) / self._len + x, y = self.view((x, y)) + series_margin = width * self._series_margin + x += series_margin + width -= 2 * series_margin + width /= self._order + x += serie.index * width + serie_margin = width * self._serie_margin + x += serie_margin + width -= 2 * serie_margin + height = self.view.y(zero) - y + + self.svg.node(node,'text',x=x + width / 2,y=y-2,class_="text").text = value