From 3834bd102a99c9553268f63927c8dc32b7d2919a Mon Sep 17 00:00:00 2001 From: archmoj Date: Mon, 27 May 2019 21:23:14 -0400 Subject: [PATCH] fix issue 3820 - parcoords treat rgba color similar to rgb --- src/traces/parcoords/parcoords.js | 6 ++- .../gl2d_parcoords_rgba_colorscale.png | Bin 0 -> 18736 bytes .../mocks/gl2d_parcoords_rgba_colorscale.json | 47 ++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 test/image/baselines/gl2d_parcoords_rgba_colorscale.png create mode 100644 test/image/mocks/gl2d_parcoords_rgba_colorscale.json diff --git a/src/traces/parcoords/parcoords.js b/src/traces/parcoords/parcoords.js index 02e4a55ea46..c3622cb2649 100644 --- a/src/traces/parcoords/parcoords.js +++ b/src/traces/parcoords/parcoords.js @@ -9,6 +9,7 @@ 'use strict'; var d3 = require('d3'); +var rgba = require('color-rgba'); var Lib = require('../../lib'); var Drawing = require('../../components/drawing'); @@ -102,7 +103,10 @@ function ordinalScale(dimension) { function unitToColorScale(cscale) { var colorStops = cscale.map(function(d) { return d[0]; }); - var colorTuples = cscale.map(function(d) { return d3.rgb(d[1]); }); + var colorTuples = cscale.map(function(d) { + var RGBA = rgba(d[1]); + return d3.rgb('rgb(' + RGBA[0] + ',' + RGBA[1] + ',' + RGBA[2] + ')'); + }); var prop = function(n) { return function(o) { return o[n]; }; }; // We can't use d3 color interpolation as we may have non-uniform color palette raster diff --git a/test/image/baselines/gl2d_parcoords_rgba_colorscale.png b/test/image/baselines/gl2d_parcoords_rgba_colorscale.png new file mode 100644 index 0000000000000000000000000000000000000000..8f48a14359375d071e9e1188d5c0da68dfae7146 GIT binary patch literal 18736 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