From 44e62e77ca264119c4565829fd8895431be29ff5 Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Wed, 28 Apr 2021 23:41:57 +0300 Subject: [PATCH] Improve linear tick generators collision estimation (#8983) * Increase distance to min/max tick to 1/3 space * Better estimation on linear tick collision * Lint fix * Remove unused change --- src/core/core.scale.js | 9 +++++ src/scales/scale.linearbase.js | 9 +++-- .../scale.linear/min-max-skip-edge-case-1.js | 31 ++++++++++++++++++ .../scale.linear/min-max-skip-edge-case-1.png | Bin 0 -> 17848 bytes .../scale.linear/min-max-skip-edge-case-2.js | 31 ++++++++++++++++++ .../scale.linear/min-max-skip-edge-case-2.png | Bin 0 -> 12816 bytes .../scale.linear/min-max-skip-edge-case-3.js | 31 ++++++++++++++++++ .../scale.linear/min-max-skip-edge-case-3.png | Bin 0 -> 15750 bytes .../scale.linear/min-max-skip-edge-case-4.js | 31 ++++++++++++++++++ .../scale.linear/min-max-skip-edge-case-4.png | Bin 0 -> 15579 bytes 10 files changed, 139 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/scale.linear/min-max-skip-edge-case-1.js create mode 100644 test/fixtures/scale.linear/min-max-skip-edge-case-1.png create mode 100644 test/fixtures/scale.linear/min-max-skip-edge-case-2.js create mode 100644 test/fixtures/scale.linear/min-max-skip-edge-case-2.png create mode 100644 test/fixtures/scale.linear/min-max-skip-edge-case-3.js create mode 100644 test/fixtures/scale.linear/min-max-skip-edge-case-3.png create mode 100644 test/fixtures/scale.linear/min-max-skip-edge-case-4.js create mode 100644 test/fixtures/scale.linear/min-max-skip-edge-case-4.png diff --git a/src/core/core.scale.js b/src/core/core.scale.js index 5b793a6f3..f5feb9fff 100644 --- a/src/core/core.scale.js +++ b/src/core/core.scale.js @@ -1658,4 +1658,13 @@ export default class Scale extends Element { const opts = this.options.ticks.setContext(this.getContext(index)); return toFont(opts.font); } + + /** + * @protected + */ + _maxDigits() { + const me = this; + const fontSize = me._resolveTickFontOptions(0).lineHeight; + return me.isHorizontal() ? me.width / fontSize / 0.7 : me.height / fontSize; + } } diff --git a/src/scales/scale.linearbase.js b/src/scales/scale.linearbase.js index 9eda15c33..de1dbe967 100644 --- a/src/scales/scale.linearbase.js +++ b/src/scales/scale.linearbase.js @@ -29,13 +29,14 @@ function generateTicks(generationOptions, dataRange) { // for details. const MIN_SPACING = 1e-14; - const {step, min, max, precision, count, maxTicks} = generationOptions; + const {step, min, max, precision, count, maxTicks, maxDigits, horizontal} = generationOptions; const unit = step || 1; const maxSpaces = maxTicks - 1; const {min: rmin, max: rmax} = dataRange; const minDefined = !isNullOrUndef(min); const maxDefined = !isNullOrUndef(max); const countDefined = !isNullOrUndef(count); + const minSpacing = (rmax - rmin) / maxDigits; let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit; let factor, niceMin, niceMax, numSpaces; @@ -102,7 +103,7 @@ function generateTicks(generationOptions, dataRange) { j++; } // If the next nice tick is close to min, skip that too - if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, spacing / 10)) { + if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, minSpacing * (horizontal ? ('' + min).length : 1))) { j++; } } @@ -113,7 +114,7 @@ function generateTicks(generationOptions, dataRange) { if (maxDefined) { // If the previous tick is close to max, replace it with max, else add max - if (almostEquals(ticks[ticks.length - 1].value, max, spacing / 10)) { + if (almostEquals(ticks[ticks.length - 1].value, max, minSpacing * (horizontal ? ('' + max).length : 1))) { ticks[ticks.length - 1].value = max; } else { ticks.push({value: max}); @@ -230,6 +231,8 @@ export default class LinearScaleBase extends Scale { precision: tickOpts.precision, step: tickOpts.stepSize, count: tickOpts.count, + maxDigits: me._maxDigits(), + horizontal: me.isHorizontal() }; const dataRange = me._range || me; const ticks = generateTicks(numericGeneratorOptions, dataRange); diff --git a/test/fixtures/scale.linear/min-max-skip-edge-case-1.js b/test/fixtures/scale.linear/min-max-skip-edge-case-1.js new file mode 100644 index 000000000..89a6dd883 --- /dev/null +++ b/test/fixtures/scale.linear/min-max-skip-edge-case-1.js @@ -0,0 +1,31 @@ +module.exports = { + description: 'https://github.com/chartjs/Chart.js/issues/8982', + config: { + type: 'scatter', + options: { + scales: { + y: { + max: 1069, + min: 230, + ticks: { + autoSkip: false + } + }, + x: { + max: 1069, + min: 230, + ticks: { + autoSkip: false + } + } + } + } + }, + options: { + spriteText: true, + canvas: { + height: 211, + width: 408 + } + } +}; diff --git a/test/fixtures/scale.linear/min-max-skip-edge-case-1.png b/test/fixtures/scale.linear/min-max-skip-edge-case-1.png new file mode 100644 index 0000000000000000000000000000000000000000..9401c0eb477cacdcc064dedf91a51bdd1f19a822 GIT binary patch literal 17848 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

dJ*6>os#3`JGN0qhYz4rIJX> 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