From 68b7ba1b04f554359b1f1048c61d6b736415ce3b Mon Sep 17 00:00:00 2001 From: Andrew Newnham Date: Thu, 14 Apr 2016 11:13:36 +1000 Subject: [PATCH] add treemap --- .../assets/images/viz_thumbnails/treemap.png | Bin 0 -> 80638 bytes caravel/assets/javascripts/modules/caravel.js | 3 +- caravel/assets/visualizations/treemap.css | 15 +++ caravel/assets/visualizations/treemap.js | 104 ++++++++++++++++++ caravel/data/__init__.py | 12 ++ caravel/viz.py | 32 ++++++ 6 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 caravel/assets/images/viz_thumbnails/treemap.png create mode 100644 caravel/assets/visualizations/treemap.css create mode 100644 caravel/assets/visualizations/treemap.js diff --git a/caravel/assets/images/viz_thumbnails/treemap.png b/caravel/assets/images/viz_thumbnails/treemap.png new file mode 100644 index 0000000000000000000000000000000000000000..cfd96e35a25d2d010d7fdc91fd5d8eb88fea76b9 GIT binary patch literal 80638 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 1; + for (var i = 0, l = json.data.length; i < l; i ++) { + _draw(json.data[i], width, height, includeTitles); + } + + slice.done(json); + + }); + + }; + + return { + render: render, + resize: render + }; +} + +module.exports = treemap; + diff --git a/caravel/data/__init__.py b/caravel/data/__init__.py index a047e1be3054..d92651e0f557 100644 --- a/caravel/data/__init__.py +++ b/caravel/data/__init__.py @@ -275,6 +275,18 @@ def load_world_bank_health_n_pop(): whisker_options="Tukey", viz_type='box_plot', groupby=["region"],)), + Slice( + slice_name="Treemap", + viz_type='treemap', + datasource_type='table', + table=tbl, + params=get_slice_json( + defaults, + since="1960-01-01", + until="now", + viz_type='treemap', + metrics=["sum__SP_POP_TOTL"], + groupby=["region", "country_code"],)), ] for slc in slices: merge_slice(slc) diff --git a/caravel/viz.py b/caravel/viz.py index 6037de9a1c38..79548446ed5d 100644 --- a/caravel/viz.py +++ b/caravel/viz.py @@ -486,6 +486,37 @@ def get_data(self): return df.to_dict(orient="records") +class TreemapViz(BaseViz): + + """Tree map visualisation for hierarchical data.""" + + viz_type = "treemap" + verbose_name = "Treemap" + credits = 'd3.js' + is_timeseries = False + + def get_df(self, query_obj=None): + df = super(TreemapViz, self).get_df(query_obj) + df = df.set_index(self.form_data.get("groupby")) + return df + + def _nest(self, metric, df): + nlevels = df.index.nlevels + if nlevels == 1: + result = [{"name": n, "value": v} + for n, v in zip(df.index, df[metric])] + else: + result = [{"name": l, "children": self._nest(metric, df.loc[l])} + for l in df.index.levels[0]] + return result + + def get_data(self): + df = self.get_df() + chart_data = [{"name": metric, "children": self._nest(metric, df)} + for metric in df.columns] + return chart_data + + class NVD3Viz(BaseViz): """Base class for all nvd3 vizs""" @@ -1505,6 +1536,7 @@ def get_data(self): ParallelCoordinatesViz, HeatmapViz, BoxPlotViz, + TreemapViz, ] viz_types = OrderedDict([(v.viz_type, v) for v in viz_types_list])