Skip to content

Commit

Permalink
Merge pull request #205 from kayak/fix_order_of_series_on_highcharts
Browse files Browse the repository at this point in the history
Fixed the highcharts widget to display series in the correct sort order
  • Loading branch information
twheys committed Dec 3, 2018
2 parents 9cecee0 + bf96929 commit e660d0f
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions fireant/slicer/widgets/highcharts.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import itertools

import pandas as pd

from fireant import (
DatetimeDimension,
formats,
utils,
)

from .base import TransformableWidget
from .chart_base import (
ChartWidget,
Expand Down Expand Up @@ -104,12 +104,10 @@ def transform(self, data_frame, slicer, dimensions, references):
if isinstance(data_frame.index, pd.MultiIndex):
data_frame.update(data_frame.groupby(level=0).fillna(value='Totals'))

# Group the results by index levels after the 0th, one for each series
# Group the results by index levels after the 0th, one for each series
# This will result in a series for every combination of dimension values and each series will contain a data set
# across the 0th dimension (used for the x-axis)
series_data_frames = list(data_frame.groupby(level=data_frame.index.names[1:])) \
if isinstance(data_frame.index, pd.MultiIndex) \
else [([], data_frame)]
series_data_frames = self._group_by_series(data_frame)

total_num_series = sum([len(axis)
for axis in self.items])
Expand Down Expand Up @@ -183,6 +181,13 @@ def _render_x_axis(self, data_frame, dimensions, dimension_display_values):
"visible": self.x_axis_visible,
}

def _group_by_series(self, data_frame):
if not isinstance(data_frame.index, pd.MultiIndex):
return [([], data_frame)]

series = data_frame.index.names[1:]
return data_frame.groupby(level=series, sort=False)

def _render_y_axis(self, axis_idx, color, references):
"""
Renders the yAxis configuration.
Expand Down

0 comments on commit e660d0f

Please sign in to comment.