From d1f0276408301581dc96955c585aff49539dfc5f Mon Sep 17 00:00:00 2001 From: Maxime Beauchemin Date: Mon, 16 May 2016 22:49:12 -0700 Subject: [PATCH] Introducing Horizon charts (#472) * Introducing Horizon charts * JS Lintin --- .../assets/images/viz_thumbnails/horizon.png | Bin 0 -> 102466 bytes caravel/assets/javascripts/modules/caravel.js | 3 +- caravel/assets/visualizations/horizon.css | 17 ++ caravel/assets/visualizations/horizon.js | 237 ++++++++++++++++++ caravel/forms.py | 10 + caravel/viz.py | 20 ++ docs/gallery.rst | 3 + 7 files changed, 289 insertions(+), 1 deletion(-) create mode 100644 caravel/assets/images/viz_thumbnails/horizon.png create mode 100644 caravel/assets/visualizations/horizon.css create mode 100644 caravel/assets/visualizations/horizon.js diff --git a/caravel/assets/images/viz_thumbnails/horizon.png b/caravel/assets/images/viz_thumbnails/horizon.png new file mode 100644 index 0000000000000000000000000000000000000000..7ccd90f3ff23154dc1f6e713708685c09dc8c408 GIT binary patch literal 102466 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 literal 0 HcmV?d00001 diff --git a/caravel/assets/javascripts/modules/caravel.js b/caravel/assets/javascripts/modules/caravel.js index 57c81604d4c67..c3794b7af4e3c 100644 --- a/caravel/assets/javascripts/modules/caravel.js +++ b/caravel/assets/javascripts/modules/caravel.js @@ -28,7 +28,8 @@ var sourceMap = { word_cloud: 'word_cloud.js', world_map: 'world_map.js', treemap: 'treemap.js', - cal_heatmap: 'cal_heatmap.js' + cal_heatmap: 'cal_heatmap.js', + horizon: 'horizon.js' }; var color = function () { diff --git a/caravel/assets/visualizations/horizon.css b/caravel/assets/visualizations/horizon.css new file mode 100644 index 0000000000000..013b3e02bd060 --- /dev/null +++ b/caravel/assets/visualizations/horizon.css @@ -0,0 +1,17 @@ +.horizon .slice_container div.horizon { + border-bottom: solid 1px #444; + border-top: 0px; + padding: 0px; + margin: 0px; +} + +.horizon span { + left: 5; + position: absolute; + color: black; + text-shadow: 1px 1px rgba(255, 255, 255, 0.75); +} + +.horizon .slice_container { + overflow: auto; +} diff --git a/caravel/assets/visualizations/horizon.js b/caravel/assets/visualizations/horizon.js new file mode 100644 index 0000000000000..c8f3e3d201413 --- /dev/null +++ b/caravel/assets/visualizations/horizon.js @@ -0,0 +1,237 @@ +// Copied and modified from +// https://github.com/kmandov/d3-horizon-chart +var d3 = require('d3'); +require('./horizon.css'); + +var horizonChart = function () { + var colors = ["#313695", "#4575b4", "#74add1", "#abd9e9", "#fee090", "#fdae61", "#f46d43", "#d73027"]; + var bands = colors.length >> 1; // number of bands in each direction (positive / negative) + var width = 1000; + var height = 30; + var offsetX = 0; + var spacing = 0; + var mode = 'offset'; + var axis = null; + var title = null; + var extent = null; // the extent is derived from the data, unless explicitly set via .extent([min, max]) + var x = null; + var y = d3.scale.linear().range([0, height]); + var canvas = null; + + var b; + + function my(data) { + + var horizon = d3.select(this); + var step = width / data.length; + + horizon.append('span') + .attr('class', 'title') + .text(title); + + horizon.append('span') + .attr('class', 'value'); + + canvas = horizon.append('canvas'); + + canvas + .attr('width', width) + .attr('height', height); + + var context = canvas.node().getContext('2d'); + context.imageSmoothingEnabled = false; + + // update the y scale, based on the data extents + var _extent = extent || d3.extent(data, function (d) { return d.y; }); + + var max = Math.max(-_extent[0], _extent[1]); + y.domain([0, max]); + + //x = d3.scaleTime().domain[]; + axis = d3.svg.axis(x).ticks(5); + + context.clearRect(0, 0, width, height); + //context.translate(0.5, 0.5); + + // the data frame currently being shown: + var startIndex = ~~ Math.max(0, -(offsetX / step)); + var endIndex = ~~ Math.min(data.length, startIndex + width / step); + + // skip drawing if there's no data to be drawn + if (startIndex > data.length) { + return; + } + + // we are drawing positive & negative bands separately to avoid mutating canvas state + // http://www.html5rocks.com/en/tutorials/canvas/performance/ + var negative = false; + // draw positive bands + var i, value, bExtents; + for (b = 0; b < bands; b++) { + context.fillStyle = colors[bands + b]; + + // Adjust the range based on the current band index. + bExtents = (b + 1 - bands) * height; + y.range([bands * height + bExtents, bExtents]); + + // only the current data frame is being drawn i.e. what's visible: + for (i = startIndex; i < endIndex; i++) { + value = data[i].y; + if (value <= 0) { negative = true; continue; } + if (value === undefined) { + continue; + } + context.fillRect(offsetX + i * step, y(value), step + 1, y(0) - y(value)); + } + } + + // draw negative bands + if (negative) { + + // mirror the negative bands, by flipping the canvas + if (mode === 'offset') { + context.translate(0, height); + context.scale(1, -1); + } + + for (b = 0; b < bands; b++) { + context.fillStyle = colors[bands - b - 1]; + + // Adjust the range based on the current band index. + bExtents = (b + 1 - bands) * height; + y.range([bands * height + bExtents, bExtents]); + + // only the current data frame is being drawn i.e. what's visible: + for (var ii = startIndex; ii < endIndex; ii++) { + value = data[ii].y; + if (value >= 0) { + continue; + } + context.fillRect(offsetX + ii * step, y(-value), step + 1, y(0) - y(-value)); + } + } + } + } + + my.axis = function (_) { + if (!arguments.length) { return axis; } + axis = _; + return my; + }; + + my.title = function (_) { + if (!arguments.length) { return title; } + title = _; + return my; + }; + + my.canvas = function (_) { + if (!arguments.length) { return canvas; } + canvas = _; + return my; + }; + + // Array of colors representing the number of bands + my.colors = function (_) { + if (!arguments.length) { + return colors; + } + colors = _; + + // update the number of bands + bands = colors.length >> 1; + + return my; + }; + + my.height = function (_) { + if (!arguments.length) { return height; } + height = _; + return my; + }; + + my.width = function (_) { + if (!arguments.length) { return width; } + width = _; + return my; + }; + + my.spacing = function (_) { + if (!arguments.length) { return spacing; } + spacing = _; + return my; + }; + + // mirror or offset + my.mode = function (_) { + if (!arguments.length) { return mode; } + mode = _; + return my; + }; + + my.extent = function (_) { + if (!arguments.length) { return extent; } + extent = _; + return my; + }; + + my.offsetX = function (_) { + if (!arguments.length) { return offsetX; } + offsetX = _; + return my; + }; + + return my; +}; + +function horizonViz(slice) { + + function refresh() { + d3.json(slice.jsonEndpoint(), function (error, payload) { + var fd = payload.form_data; + if (error) { + slice.error(error.responseText); + return ''; + } + + var div = d3.select(slice.selector); + div.selectAll('*').remove(); + var extent = null; + if (fd.horizon_color_scale === 'overall') { + var allValues = []; + payload.data.forEach(function (d) { + allValues = allValues.concat(d.values); + }); + extent = d3.extent(allValues, function (d) { return d.y; }); + } else if (fd.horizon_color_scale === 'change') { + payload.data.forEach(function (series) { + var t0y = series.values[0].y; // value at time 0 + series.values.forEach(function (d, i) { + d.y = d.y - t0y; + }); + }); + } + div.selectAll(".horizon") + .data(payload.data) + .enter() + .append('div') + .attr('class', 'horizon') + .each(function (d, i) { + horizonChart() + .height(fd.series_height) + .width(slice.width()) + .extent(extent) + .title(d.key) + .call(this, d.values, i); + }); + + slice.done(); + }); + } + return { + render: refresh, + resize: refresh + }; +} + +module.exports = horizonViz; diff --git a/caravel/forms.py b/caravel/forms.py index 3372c269a2d9f..4b5310fa26110 100644 --- a/caravel/forms.py +++ b/caravel/forms.py @@ -162,6 +162,11 @@ def __init__(self, viz): "Color will be rendered based on a ratio " "of the cell against the sum of across this " "criteria")), + 'horizon_color_scale': SelectField( + 'Color Scale', choices=self.choicify([ + 'series', 'overall', 'change']), + default='series', + description="Defines how the color are attributed."), 'canvas_image_rendering': SelectField( 'Rendering', choices=( ('pixelated', 'pixelated (Sharp)'), @@ -476,6 +481,11 @@ def __init__(self, viz): default='smart_date', choices=TIMESTAMP_CHOICES, description="Timestamp Format"), + 'series_height': FreeFormSelectField( + 'Series Height', + default=25, + choices=self.choicify([10, 25, 40, 50, 75, 100, 150, 200]), + description="Pixel height of each series"), 'x_axis_format': FreeFormSelectField( 'X axis format', default='smart_date', diff --git a/caravel/viz.py b/caravel/viz.py index dd7a73abf4248..3e15b1163bb40 100644 --- a/caravel/viz.py +++ b/caravel/viz.py @@ -1610,6 +1610,25 @@ def get_data(self): return df.to_dict(orient="records") +class HorizonViz(NVD3TimeSeriesViz): + + """Horizon chart + + https://www.npmjs.com/package/d3-horizon-chart + """ + + viz_type = "horizon" + verbose_name = "Horizon Charts" + credits = ( + '' + 'd3-horizon-chart') + fieldsets = [NVD3TimeSeriesViz.fieldsets[0]] + [{ + 'label': 'Chart Options', + 'fields': ( + ('series_height', 'horizon_color_scale'), + ), }] + + viz_types_list = [ TableViz, PivotTableViz, @@ -1635,6 +1654,7 @@ def get_data(self): BoxPlotViz, TreemapViz, CalHeatmapViz, + HorizonViz, ] viz_types = OrderedDict([(v.viz_type, v) for v in viz_types_list diff --git a/docs/gallery.rst b/docs/gallery.rst index 411dd4345c92d..d44f184f28596 100644 --- a/docs/gallery.rst +++ b/docs/gallery.rst @@ -73,3 +73,6 @@ Gallery .. image:: _static/img/viz_thumbnails/cal_heatmap.png :scale: 25 % +.. image:: _static/img/viz_thumbnails/horizon.png + :scale: 25 % +