diff --git a/pygal/graph/bar.py b/pygal/graph/bar.py index 8c8fa45..2f3cf5c 100644 --- a/pygal/graph/bar.py +++ b/pygal/graph/bar.py @@ -63,7 +63,7 @@ class Bar(Graph): if rescale and self.secondary_series: points = [ (x, self._scale_diff + (y - self._scale_min_2nd) * self._scale) - for x, y in serie.points] + for x, y in serie.points if y is not None] else: points = serie.points @@ -121,7 +121,7 @@ class Bar(Graph): ymax = new_ymax left_range = abs(self._box.ymax - self._box.ymin) - right_range = abs(ymax - ymin) + right_range = abs(ymax - ymin) or 1 self._scale = left_range / right_range self._scale_diff = self._box.ymin self._scale_min_2nd = ymin diff --git a/pygal/graph/datey.py b/pygal/graph/datey.py index 54a666c..e624284 100644 --- a/pygal/graph/datey.py +++ b/pygal/graph/datey.py @@ -50,7 +50,7 @@ class DateY(XY): def _todate(self, d): """ Converts a number to a date """ - return str(self._offset + datetime.timedelta(seconds=d)) + return str(self._offset + datetime.timedelta(seconds=d or 0)) def _tonumber(self, d): """ Converts a date to a number """ @@ -71,7 +71,7 @@ class DateY(XY): for val in serie.values if val[0] is not None] or [datetime.datetime.fromtimestamp(0)]) - for serie in self.series: + for serie in self.all_series: serie.values = [(self._tonumber(v[0]), v[1]) for v in serie.values] xvals = [val[0] @@ -89,7 +89,7 @@ class DateY(XY): else: rng = None - for serie in self.series: + for serie in self.all_series: serie.points = serie.values if self.interpolate and rng: vals = list(zip(*sorted( @@ -99,10 +99,10 @@ class DateY(XY): if self.interpolate and rng: xvals = [val[0] - for serie in self.series + for serie in self.all_series for val in serie.interpolated] yvals = [val[1] - for serie in self.series + for serie in self.all_series for val in serie.interpolated] if xvals: xmin = min(xvals) diff --git a/pygal/graph/graph.py b/pygal/graph/graph.py index 04f8db8..f77afd3 100644 --- a/pygal/graph/graph.py +++ b/pygal/graph/graph.py @@ -472,7 +472,7 @@ class Graph(BaseGraph): ymax = self._secondary_max steps = len(y_pos) left_range = abs(y_pos[-1] - y_pos[0]) - right_range = abs(ymax - ymin) + right_range = abs(ymax - ymin) or 1 scale = right_range / (steps - 1) self._y_2nd_labels = [(self._format(ymin + i * scale), pos) for i, pos in enumerate(y_pos)] diff --git a/pygal/graph/line.py b/pygal/graph/line.py index 846be00..e934372 100644 --- a/pygal/graph/line.py +++ b/pygal/graph/line.py @@ -60,11 +60,9 @@ class Line(Graph): def line(self, serie_node, serie, rescale=False): """Draw the line serie""" if rescale and self.secondary_series: - points = [] - for x, y in serie.points: - if y is not None: - y = self._scale_diff + (y - self._scale_min_2nd) * self._scale - points.append((x, y)) + points = [ + (x, self._scale_diff + (y - self._scale_min_2nd) * self._scale) + for x, y in serie.points if y is not None] else: points = serie.points view_values = list(map(self.view, points)) diff --git a/pygal/graph/verticalpyramid.py b/pygal/graph/verticalpyramid.py index f4e33fa..308fb76 100644 --- a/pygal/graph/verticalpyramid.py +++ b/pygal/graph/verticalpyramid.py @@ -22,7 +22,6 @@ Pyramid chart """ from __future__ import division -from pygal.util import compute_scale, safe_enumerate from pygal.adapters import positive from pygal.graph.stackedbar import StackedBar @@ -33,7 +32,8 @@ class VerticalPyramid(StackedBar): _adapters = [positive] def _format(self, value): - return super(VerticalPyramid, self)._format(abs(value)) + value = value and abs(value) + return super(VerticalPyramid, self)._format(value) def _get_separated_values(self, secondary=False): series = self.secondary_series if secondary else self.series