diff --git a/caravel/assets/visualizations/nvd3_vis.js b/caravel/assets/visualizations/nvd3_vis.js index ba205ab3a112b..c8db32887d5d9 100644 --- a/caravel/assets/visualizations/nvd3_vis.js +++ b/caravel/assets/visualizations/nvd3_vis.js @@ -16,8 +16,14 @@ function nvd3Vis(slice) { var render = function () { d3.json(slice.jsonEndpoint(), function (error, payload) { var width = slice.width(); + var fd = payload.form_data; var barchartWidth = function () { - var bars = d3.sum(payload.data, function (d) { return d.values.length; }); + var bars; + if (fd.bar_stacked) { + bars = d3.max(payload.data, function (d) { return d.values.length; }); + } else { + bars = d3.sum(payload.data, function (d) { return d.values.length; }); + } if (bars * minBarWidth > width) { return bars * minBarWidth; } else { @@ -33,7 +39,6 @@ function nvd3Vis(slice) { } return ''; } - var fd = payload.form_data; var viz_type = fd.viz_type; var f = d3.format('.3s'); var reduceXTicks = fd.reduce_x_ticks || false; @@ -61,7 +66,7 @@ function nvd3Vis(slice) { case 'bar': chart = nv.models.multiBarChart() - .showControls(true) + .showControls(false) .groupSpacing(0.1); if (!reduceXTicks) { @@ -77,7 +82,7 @@ function nvd3Vis(slice) { case 'dist_bar': chart = nv.models.multiBarChart() - .showControls(true) //Allow user to switch between 'Grouped' and 'Stacked' mode. + .showControls(false) //Allow user to switch between 'Grouped' and 'Stacked' mode. .reduceXTicks(reduceXTicks) .rotateLabels(45) .groupSpacing(0.1); //Distance between each group of bars. diff --git a/caravel/forms.py b/caravel/forms.py index 97a833e9f78c2..cddd475e84937 100644 --- a/caravel/forms.py +++ b/caravel/forms.py @@ -228,7 +228,7 @@ def __init__(self, viz): 'reduce_x_ticks': (BetterBooleanField, { "label": _("Reduce X ticks"), "default": False, - "description": ( + "description": _( "Reduces the number of X axis ticks to be rendered. " "If true, the x axis wont overflow and labels may be " "missing. If false, a minimum width will be applied " diff --git a/caravel/viz.py b/caravel/viz.py index c8e4d3b429569..5ae423bcfc0e1 100644 --- a/caravel/viz.py +++ b/caravel/viz.py @@ -1159,7 +1159,7 @@ class DistributionBarViz(DistributionPieViz): ('show_legend', 'bar_stacked'), ('y_axis_format', 'bottom_margin'), ('x_axis_label', 'y_axis_label'), - ('reduce_x_ticks', None), + ('reduce_x_ticks', 'contribution'), ) },) form_overrides = { @@ -1198,6 +1198,10 @@ def get_df(self, query_obj=None): index=self.groupby, columns=columns, values=self.metrics) + if fd.get("contribution"): + pt = pt.fillna(0) + pt = pt.T + pt = (pt / pt.sum()).T pt = pt.reindex(row.index) return pt