Repository: zeppelin Updated Branches: refs/heads/master cf131c868 -> 45e80fd60
[ZEPPELIN-2252] discreteness of line charts ### What is this PR for? Added a discreteness in the line chart. Correcting the display of the chart, when the values does not exist at the point (by default Y is set to 0, at the moment). A value of 0 is unclear (it is real value from data or it is default value). ### What type of PR is it? Improvement ### What is the Jira issue? https://issues.apache.org/jira/browse/ZEPPELIN-2252 ### How should this be tested? 1. Spark interpreter ``` var text = """g1,1 g1,1 g1,2 g1,3 g1,5 g1,5 g2,1 g2,1 g2,2 g2,2 g2,6 g2,6 g2,7 g2,7 g2,7""" val array = sc.parallelize(text.split('\n')) case class Line(group: String, value: Integer) val line = array.map(s => s.split(",")).map( s => Line(s(0), s(1).toInt ) ).toDF() line.registerTempTable("lines") ``` 2. ``` %sql select *from lines ``` Settings of chart on screenshot ### Screenshots (if appropriate) before  after  ### Questions: * Does the licenses files need update? no * Is there breaking changes for older versions? no * Does this needs documentation? no Author: Tinkoff DWH <tinkoff....@gmail.com> Closes #2129 from tinkoff-dwh/ZEPPELIN-2252 and squashes the following commits: f42cfbb [Tinkoff DWH] [ZEPPELIN-2252] discreteness of line charts Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/45e80fd6 Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/45e80fd6 Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/45e80fd6 Branch: refs/heads/master Commit: 45e80fd603665ab76b53242cded4f2c7ca7495c6 Parents: cf131c8 Author: Tinkoff DWH <tinkoff....@gmail.com> Authored: Mon Mar 13 15:48:23 2017 +0500 Committer: Felix Cheung <felixche...@apache.org> Committed: Tue Mar 14 20:06:18 2017 -0700 ---------------------------------------------------------------------- .../visualization/builtins/visualization-linechart.js | 11 ++++++++++- .../visualization/builtins/visualization-nvd3chart.js | 9 +++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/zeppelin/blob/45e80fd6/zeppelin-web/src/app/visualization/builtins/visualization-linechart.js ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/app/visualization/builtins/visualization-linechart.js b/zeppelin-web/src/app/visualization/builtins/visualization-linechart.js index 90db33f..02a2114 100644 --- a/zeppelin-web/src/app/visualization/builtins/visualization-linechart.js +++ b/zeppelin-web/src/app/visualization/builtins/visualization-linechart.js @@ -70,7 +70,12 @@ export default class LinechartVisualization extends Nvd3ChartVisualization { configureChart(chart) { var self = this; chart.xAxis.tickFormat(function(d) {return self.xAxisTickFormat(d, self.xLabels);}); - chart.yAxis.tickFormat(function(d) {return self.yAxisTickFormat(d, self.xLabels);}); + chart.yAxis.tickFormat(function(d) { + if (d === undefined) { + return 'N/A'; + } + return self.yAxisTickFormat(d, self.xLabels); + }); chart.yAxis.axisLabelDistance(50); if (chart.useInteractiveGuideline) { // lineWithFocusChart hasn't got useInteractiveGuideline chart.useInteractiveGuideline(true); // for better UX and performance issue. (https://github.com/novus/nvd3/issues/691) @@ -111,4 +116,8 @@ export default class LinechartVisualization extends Nvd3ChartVisualization { } }; }; + + defaultY() { + return undefined; + }; } http://git-wip-us.apache.org/repos/asf/zeppelin/blob/45e80fd6/zeppelin-web/src/app/visualization/builtins/visualization-nvd3chart.js ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/app/visualization/builtins/visualization-nvd3chart.js b/zeppelin-web/src/app/visualization/builtins/visualization-nvd3chart.js index 61de1d9..b0f569e 100644 --- a/zeppelin-web/src/app/visualization/builtins/visualization-nvd3chart.js +++ b/zeppelin-web/src/app/visualization/builtins/visualization-nvd3chart.js @@ -81,6 +81,10 @@ export default class Nvd3ChartVisualization extends Visualization { return s; }; + defaultY() { + return 0; + }; + xAxisTickFormat(d, xLabels) { if (xLabels[d] && (isNaN(parseFloat(xLabels[d])) || !isFinite(xLabels[d]))) { // to handle string type xlabel return xLabels[d]; @@ -98,6 +102,7 @@ export default class Nvd3ChartVisualization extends Visualization { d3DataFromPivot( schema, rows, keys, groups, values, allowTextXAxis, fillMissingValues, multiBarChart) { + var self = this; // construct table data var d3g = []; @@ -181,10 +186,10 @@ export default class Nvd3ChartVisualization extends Visualization { } var xVar = isNaN(rowValue) ? ((allowTextXAxis) ? rowValue : rowNameIndex[rowValue]) : parseFloat(rowValue); - var yVar = 0; + var yVar = self.defaultY(); if (xVar === undefined) { xVar = colName; } if (value !== undefined) { - yVar = isNaN(value.value) ? 0 : parseFloat(value.value) / parseFloat(value.count); + yVar = isNaN(value.value) ? self.defaultY() : parseFloat(value.value) / parseFloat(value.count); } d3g[i].values.push({ x: xVar,