From 4cfa465a2bb06df39367c7ca66b3a57bf303e608 Mon Sep 17 00:00:00 2001 From: Evert Timberg Date: Sun, 7 Jun 2020 16:32:08 -0400 Subject: [PATCH] Stacked scatter chart (#7468) * Handle partially stacked scatter charts * Update test files --- src/core/core.datasetController.js | 5 +- .../stacking/stacked-scatter.js | 68 ++++++++++++++++++ .../stacking/stacked-scatter.png | Bin 0 -> 5156 bytes 3 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/controller.line/stacking/stacked-scatter.js create mode 100644 test/fixtures/controller.line/stacking/stacked-scatter.png diff --git a/src/core/core.datasetController.js b/src/core/core.datasetController.js index 478f77360..a5626b899 100644 --- a/src/core/core.datasetController.js +++ b/src/core/core.datasetController.js @@ -638,8 +638,9 @@ export default class DatasetController { let i, value, parsed, otherValue; function _compute() { - if (stack) { - stack.values = parsed._stacks[scale.axis]; + const values = stack && parsed._stacks[scale.axis]; + if (stack && values) { + stack.values = values; // Need to consider individual stack values for data range, // in addition to the stacked value min = Math.min(min, value); diff --git a/test/fixtures/controller.line/stacking/stacked-scatter.js b/test/fixtures/controller.line/stacking/stacked-scatter.js new file mode 100644 index 000000000..7fa6032dd --- /dev/null +++ b/test/fixtures/controller.line/stacking/stacked-scatter.js @@ -0,0 +1,68 @@ +module.exports = { + config: { + type: 'scatter', + data: { + datasets: [{ + label: 'label1', + data: [{ + x: 0, + y: 30 + }, { + x: 5, + y: 35 + }, { + x: 10, + y: 20 + }], + backgroundColor: '#42A8E4' + }, + { + label: 'label2', + data: [{ + x: 0, + y: 10 + }, { + x: 5, + y: 15 + }, { + x: 10, + y: 15 + }], + backgroundColor: '#FC3F55' + }, + { + label: 'label3', + data: [{ + x: 0, + y: -15 + }, { + x: 5, + y: -10 + }, { + x: 10, + y: -20 + }], + backgroundColor: '#FFBE3F' + }], + }, + options: { + scales: { + x: { + display: false, + position: 'bottom', + }, + y: { + stacked: true, + display: false, + position: 'left', + }, + }, + }, + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.line/stacking/stacked-scatter.png b/test/fixtures/controller.line/stacking/stacked-scatter.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe32c74545bc849c55b6aea099637a95ea18787 GIT binary patch literal 5156 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 OL8newnv@(TU;lS6ZQ#8C literal 0 HcmV?d00001