From 6f14b145d1e1ac3a9e30c37543a72c7d4ac4bbff 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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