From 99d3fb8c9addf92a6edb68b7fe2d35e996007782 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Tusz?= Date: Wed, 13 Apr 2016 14:04:20 -0400 Subject: [PATCH 1/5] Change returned format of color for colorscale test --- test/jasmine/tests/colorscale_test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/jasmine/tests/colorscale_test.js b/test/jasmine/tests/colorscale_test.js index 778f32ceb20..776d84b118a 100644 --- a/test/jasmine/tests/colorscale_test.js +++ b/test/jasmine/tests/colorscale_test.js @@ -389,9 +389,9 @@ describe('Test colorscale:', function() { color4 = scaleFunction(4); expect(color1).toEqual(color2); - expect(color1).toEqual('#050aac'); + expect(color1).toEqual('rgb(5, 10, 172)'); expect(color3).toEqual(color4); - expect(color4).toEqual('#b20a1c'); + expect(color4).toEqual('rgb(178, 10, 28)'); }); }); }); From 0e41ea1dbf0c5b09d9aa37ea26e889a7137b892b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Tusz?= Date: Wed, 13 Apr 2016 14:18:23 -0400 Subject: [PATCH 2/5] Add opacity support for colorscale interpolation --- src/components/colorscale/make_scale_function.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/colorscale/make_scale_function.js b/src/components/colorscale/make_scale_function.js index 05a4c2fffd4..041217e4e37 100644 --- a/src/components/colorscale/make_scale_function.js +++ b/src/components/colorscale/make_scale_function.js @@ -26,18 +26,20 @@ module.exports = function makeScaleFunction(scl, cmin, cmax) { for(var i = 0; i < N; i++) { si = scl[i]; domain[i] = cmin + si[0] * (cmax - cmin); - range[i] = si[1]; + range[i] = tinycolor(si[1]).toRgb(); } var sclFunc = d3.scale.linear() .domain(domain) - .interpolate(d3.interpolateRgb) + .interpolate(d3.interpolateObject) .range(range); return function(v) { if(isNumeric(v)) { - var sclVal = Lib.constrain(v, cmin, cmax); - return sclFunc(sclVal); + var sclVal = Lib.constrain(v, cmin, cmax), + colorObj = sclFunc(sclVal); + + return tinycolor(colorObj).toRgbString(); } else if(tinycolor(v).isValid()) return v; else return Color.defaultLine; From e645b1c75ff1268b0e865ec26dcab0aa6a56ef32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Tusz?= Date: Wed, 13 Apr 2016 20:03:13 +0000 Subject: [PATCH 3/5] Add colorscale opacity baseline --- test/image/baselines/colorscale_opacity.png | Bin 0 -> 23487 bytes test/image/mocks/colorscale_opacity.json | 56 ++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 test/image/baselines/colorscale_opacity.png create mode 100644 test/image/mocks/colorscale_opacity.json diff --git a/test/image/baselines/colorscale_opacity.png b/test/image/baselines/colorscale_opacity.png new file mode 100644 index 0000000000000000000000000000000000000000..7816120ecce25fd2d286941380a7837980f0bcde GIT binary patch literal 23487 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 literal 0 HcmV?d00001 diff --git a/test/image/mocks/colorscale_opacity.json b/test/image/mocks/colorscale_opacity.json new file mode 100644 index 00000000000..9da112f70dd --- /dev/null +++ b/test/image/mocks/colorscale_opacity.json @@ -0,0 +1,56 @@ +{ + "data": [ + { + "y": [ + 5, + 5, + 5, + 5 + ], + "mode": "markers", + "marker": { + "size": 40, + "colorscale": [ + [ + 0, + "rgb(255,0.0,0.0)" + ], + [ + 1, + "rgba(0.0,0.0,255,0.5)" + ] + ], + "color": [ + 0, + 1, + 2, + 3 + ], + "cmin": 0, + "cmax": 3 + }, + "uid": "07bab4" + } + ], + "layout": { + "title": "Scatter Plot with a Color Dimension", + "xaxis": { + "range": [ + -0.271356783919598, + 3.271356783919598 + ], + "autorange": true + }, + "yaxis": { + "type": "linear", + "range": [ + 4, + 6 + ], + "autorange": true + }, + "height": 450, + "width": 1100, + "autosize": true + } +} From 0fe718d42707dc474090924ee4b81f1b710c371c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Tusz?= Date: Thu, 14 Apr 2016 17:54:09 -0400 Subject: [PATCH 4/5] Fix colorbar to work using alpha colors but still display opaque colors --- src/components/colorbar/draw.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/components/colorbar/draw.js b/src/components/colorbar/draw.js index 6479c5f347e..2b3008131bf 100644 --- a/src/components/colorbar/draw.js +++ b/src/components/colorbar/draw.js @@ -10,6 +10,7 @@ 'use strict'; var d3 = require('d3'); +var tc = require('tinycolor2'); var Plotly = require('../../plotly'); var Plots = require('../../plots/plots'); @@ -356,13 +357,22 @@ module.exports = function draw(gd, id) { if(i!==filllevels.length-1) { z[1] += (z[1]>z[0]) ? 1 : -1; } + + + // Tinycolor can't handle exponents and + // at this scale, removing it makes no difference. + var colorString = fillcolormap(d).replace('e-', ''), + opaqueColor = tc(colorString).toHexString(); + + // Colorbar cannot currently support opacities so we + // use an opaque fill even when alpha channels present d3.select(this).attr({ x: xLeft, width: Math.max(thickPx,2), y: d3.min(z), - height: Math.max(d3.max(z)-d3.min(z),2) - }) - .style('fill',fillcolormap(d)); + height: Math.max(d3.max(z)-d3.min(z),2), + fill: opaqueColor + }); }); var lines = container.select('.cblines') From 5518befbfe9c628ab7d046c951935f11de23bc73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Tusz?= Date: Fri, 15 Apr 2016 10:42:30 -0400 Subject: [PATCH 5/5] bow to the :cow2: --- src/components/colorbar/draw.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/colorbar/draw.js b/src/components/colorbar/draw.js index 2b3008131bf..28c83ae1e78 100644 --- a/src/components/colorbar/draw.js +++ b/src/components/colorbar/draw.js @@ -10,7 +10,7 @@ 'use strict'; var d3 = require('d3'); -var tc = require('tinycolor2'); +var tinycolor = require('tinycolor2'); var Plotly = require('../../plotly'); var Plots = require('../../plots/plots'); @@ -362,7 +362,7 @@ module.exports = function draw(gd, id) { // Tinycolor can't handle exponents and // at this scale, removing it makes no difference. var colorString = fillcolormap(d).replace('e-', ''), - opaqueColor = tc(colorString).toHexString(); + opaqueColor = tinycolor(colorString).toHexString(); // Colorbar cannot currently support opacities so we // use an opaque fill even when alpha channels present