From 172d08743cef60c16d43dc72657223ff83c6f37f Mon Sep 17 00:00:00 2001 From: Erwan MAS Date: Sun, 2 Sep 2018 23:35:08 -0400 Subject: [PATCH] - fix issue scattergl and fill to zero and undefined value https://codepen.io/erwanmas/pen/aaJXLY --- src/traces/scattergl/index.js | 15 +++++--- test/image/baselines/fill_trace.png | Bin 0 -> 14182 bytes test/image/mocks/fill_trace.json | 52 ++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 test/image/baselines/fill_trace.png create mode 100644 test/image/mocks/fill_trace.json diff --git a/src/traces/scattergl/index.js b/src/traces/scattergl/index.js index befc5e468f5..d10d12f5286 100644 --- a/src/traces/scattergl/index.js +++ b/src/traces/scattergl/index.js @@ -439,10 +439,17 @@ function plot(gd, subplot, cdata) { var pos = [], srcPos = (lineOptions && lineOptions.positions) || stash.positions; if(trace.fill === 'tozeroy') { - pos = [srcPos[0], 0]; - pos = pos.concat(srcPos); - pos.push(srcPos[srcPos.length - 2]); - pos.push(0); + var firstdef = 1; + while(isNaN(srcPos[firstdef])) { + firstdef += 2; + } + var lastdef = srcPos.length - 1; + while(isNaN(srcPos[lastdef])) { + lastdef += -2; + } + pos = [ srcPos[firstdef - 1], 0 ]; + pos = pos.concat(srcPos.slice(firstdef - 1, lastdef + 1)); + pos = pos.concat([ srcPos[lastdef - 1], 0 ]); } else if(trace.fill === 'tozerox') { pos = [0, srcPos[1]]; diff --git a/test/image/baselines/fill_trace.png b/test/image/baselines/fill_trace.png new file mode 100644 index 0000000000000000000000000000000000000000..5216439bd74d25433c1dd19be2854ed93f71b23c GIT binary patch literal 14182 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 Tp4-6x=hQrR`s^roKTP-^O3nxA literal 0 HcmV?d00001 diff --git a/test/image/mocks/fill_trace.json b/test/image/mocks/fill_trace.json new file mode 100644 index 00000000000..07a89ffbd3d --- /dev/null +++ b/test/image/mocks/fill_trace.json @@ -0,0 +1,52 @@ +{ + "data": [ + { + "x": [ + 1, + 2, + 3, + 4, + 5 + ], + "y": [ null + , + 100, + 100,null + ,null + ], + "type": "scattergl", + "fill": "tozeroy", + "mode": "none", + "showlegend": false, + "fillcolor": "#90ff70", + "line": { "color": "#90ff70" } + + }, + { + "x": [ + 1, + 2, + 3, + 4, + 5 + ], + "y": [null + ,null + ,null + , + 100, + 100 + ], + "type": "scattergl", + "fill": "tozeroy", + "mode": "none", + "showlegend": false, + "fillcolor": "#f02f20", + "line": { "color": "#f02f20" } + } + ], + "layout": { + "margin": {"l": 100, "r": 100, "t": 100, "b": 100}, + "yaxis": { "title": "Y axis 2 ", "type": "linear", "rangemode": "tozero", "nticks": 3 } + } +}