diff --git a/src/traces/parcoords/parcoords.js b/src/traces/parcoords/parcoords.js index 924d016289f..f13b7e673de 100644 --- a/src/traces/parcoords/parcoords.js +++ b/src/traces/parcoords/parcoords.js @@ -176,7 +176,7 @@ function viewModel(model) { viewModel.dimensions = dimensions.filter(visible).map(function(dimension, i) { var domainToUnit = domainToUnitScale(dimension); var foundKey = uniqueKeys[dimension.label]; - uniqueKeys[dimension.label] = (foundKey ? 0 : foundKey) + 1; + uniqueKeys[dimension.label] = (foundKey || 0) + 1; var key = dimension.label + (foundKey ? '__' + foundKey : ''); return { key: key, diff --git a/test/jasmine/tests/parcoords_test.js b/test/jasmine/tests/parcoords_test.js index 6aa01532634..292c2d041f8 100644 --- a/test/jasmine/tests/parcoords_test.js +++ b/test/jasmine/tests/parcoords_test.js @@ -285,6 +285,23 @@ describe('@noCI parcoords', function() { }); }); + it('Works with duplicate dimension labels', function(done) { + + var mockCopy = Lib.extendDeep({}, mock2); + + mockCopy.layout.width = 320; + mockCopy.data[0].dimensions[1].label = mockCopy.data[0].dimensions[0].label; + + var gd = createGraphDiv(); + Plotly.plot(gd, mockCopy.data, mockCopy.layout).then(function() { + + expect(gd.data.length).toEqual(1); + expect(gd.data[0].dimensions.length).toEqual(2); + expect(document.querySelectorAll('.axis').length).toEqual(2); + done(); + }); + }); + it('Works with a single line; also, use a longer color array than the number of lines', function(done) { var mockCopy = Lib.extendDeep({}, mock2);