From 8fdc4ddf969fe1c8004a78aae4480f1564bdc203 Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Wed, 26 May 2021 17:14:11 +0300 Subject: [PATCH 1/3] Refine logarithmic scaling / tick generation --- src/core/core.ticks.js | 4 +- src/scales/scale.logarithmic.js | 91 ++++++++++++------ .../fixtures/scale.logarithmic/large-range.js | 31 ++++++ .../scale.logarithmic/large-range.png | Bin 0 -> 21903 bytes .../large-values-small-range.js | 31 ++++++ .../large-values-small-range.png | Bin 0 -> 31626 bytes test/fixtures/scale.logarithmic/med-range.js | 31 ++++++ test/fixtures/scale.logarithmic/med-range.png | Bin 0 -> 23657 bytes .../fixtures/scale.logarithmic/small-range.js | 31 ++++++ .../scale.logarithmic/small-range.png | Bin 0 -> 22598 bytes test/specs/core.ticks.tests.js | 6 +- test/specs/scale.logarithmic.tests.js | 34 ++++--- 12 files changed, 209 insertions(+), 50 deletions(-) create mode 100644 test/fixtures/scale.logarithmic/large-range.js create mode 100644 test/fixtures/scale.logarithmic/large-range.png create mode 100644 test/fixtures/scale.logarithmic/large-values-small-range.js create mode 100644 test/fixtures/scale.logarithmic/large-values-small-range.png create mode 100644 test/fixtures/scale.logarithmic/med-range.js create mode 100644 test/fixtures/scale.logarithmic/med-range.png create mode 100644 test/fixtures/scale.logarithmic/small-range.js create mode 100644 test/fixtures/scale.logarithmic/small-range.png diff --git a/src/core/core.ticks.js b/src/core/core.ticks.js index f054ef66a20..8e3908351af 100644 --- a/src/core/core.ticks.js +++ b/src/core/core.ticks.js @@ -66,8 +66,8 @@ const formatters = { if (tickValue === 0) { return '0'; } - const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue)))); - if (remain === 1 || remain === 2 || remain === 5) { + const remain = ticks[index].significand || (tickValue / (Math.pow(10, Math.floor(log10(tickValue))))); + if ([1, 2, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) { return formatters.numeric.call(this, tickValue, index, ticks); } return ''; diff --git a/src/scales/scale.logarithmic.js b/src/scales/scale.logarithmic.js index ba7f5237f26..68c85b0c830 100644 --- a/src/scales/scale.logarithmic.js +++ b/src/scales/scale.logarithmic.js @@ -5,41 +5,68 @@ import Scale from '../core/core.scale'; import LinearScaleBase from './scale.linearbase'; import Ticks from '../core/core.ticks'; +const log10Floor = v => Math.floor(log10(v)); +const changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m); + function isMajor(tickVal) { - const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal)))); + const remain = tickVal / (Math.pow(10, log10Floor(tickVal))); return remain === 1; } +function steps(min, max, rangeExp) { + const rangeStep = Math.pow(10, rangeExp); + const start = Math.floor(min / rangeStep); + const end = Math.ceil(max / rangeStep); + return end - start; +} + +function startExp(min, max) { + const range = max - min; + let rangeExp = log10Floor(range); + while (steps(min, max, rangeExp) > 10) { + rangeExp++; + } + while (steps(min, max, rangeExp) < 10) { + rangeExp--; + } + return Math.min(rangeExp, log10Floor(min)); +} + + /** * Generate a set of logarithmic ticks * @param generationOptions the options used to generate the ticks * @param dataRange the range of the data * @returns {object[]} array of tick objects */ -function generateTicks(generationOptions, dataRange) { - const endExp = Math.floor(log10(dataRange.max)); - const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp)); +function generateTicks(generationOptions, {min, max}) { + min = finiteOrDefault(generationOptions.min, min); const ticks = []; - let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min)))); - let exp = Math.floor(log10(tickVal)); - let significand = Math.floor(tickVal / Math.pow(10, exp)); + const minExp = log10Floor(min); + let exp = startExp(min, max); let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1; - - do { - ticks.push({value: tickVal, major: isMajor(tickVal)}); - - ++significand; - if (significand === 10) { - significand = 1; - ++exp; + const stepSize = Math.pow(10, exp); + const base = minExp > exp ? Math.pow(10, minExp) : 0; + const start = Math.round((min - base) * precision) / precision; + const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10; + let significand = Math.floor((start - offset) / Math.pow(10, exp)); + let value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision; + while (value < max) { + ticks.push({value, major: isMajor(value), significand}); + if (significand >= 10) { + significand = significand === 10 ? 11 : significand === 11 ? 12 : significand < 15 ? 15 : 20; + } else { + significand++; + } + if (significand >= 20) { + exp++; + significand = 2; precision = exp >= 0 ? 1 : precision; } - - tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision; - } while (exp < endExp || (exp === endExp && significand < endSignificand)); - - const lastTick = finiteOrDefault(generationOptions.max, tickVal); - ticks.push({value: lastTick, major: isMajor(tickVal)}); + value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision; + } + const lastTick = finiteOrDefault(generationOptions.max, value); + ticks.push({value: lastTick, major: isMajor(lastTick), significand}); return ticks; } @@ -77,6 +104,12 @@ export default class LogarithmicScale extends Scale { this._zero = true; } + // if data has `0` in it or `beginAtZero` is true, min (non zero) value is at bottom + // of scale, and it does not equal suggestedMin, lower the min bound by one exp. + if (this._zero && this.min !== this._suggestedMin && !isFinite(this._userMin)) { + this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0); + } + this.handleTickRangeOptions(); } @@ -87,28 +120,24 @@ export default class LogarithmicScale extends Scale { const setMin = v => (min = minDefined ? min : v); const setMax = v => (max = maxDefined ? max : v); - const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m); if (min === max) { if (min <= 0) { // includes null setMin(1); setMax(10); } else { - setMin(exp(min, -1)); - setMax(exp(max, +1)); + setMin(changeExponent(min, -1)); + setMax(changeExponent(max, +1)); } } if (min <= 0) { - setMin(exp(max, -1)); + setMin(changeExponent(max, -1)); } if (max <= 0) { - setMax(exp(min, +1)); - } - // if data has `0` in it or `beginAtZero` is true, min (non zero) value is at bottom - // of scale, and it does not equal suggestedMin, lower the min bound by one exp. - if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) { - setMin(exp(min, -1)); + + setMax(changeExponent(min, +1)); } + this.min = min; this.max = max; } diff --git a/test/fixtures/scale.logarithmic/large-range.js b/test/fixtures/scale.logarithmic/large-range.js new file mode 100644 index 00000000000..ba123837eff --- /dev/null +++ b/test/fixtures/scale.logarithmic/large-range.js @@ -0,0 +1,31 @@ +module.exports = { + config: { + type: 'line', + data: { + labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'], + datasets: [{ + backgroundColor: 'red', + borderColor: 'red', + fill: false, + data: [23, 21, 34, 52, 115, 3333, 5116] + }] + }, + options: { + responsive: true, + scales: { + x: { + display: false, + }, + y: { + type: 'logarithmic', + ticks: { + autoSkip: false + } + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/scale.logarithmic/large-range.png b/test/fixtures/scale.logarithmic/large-range.png new file mode 100644 index 0000000000000000000000000000000000000000..13e4538c1d15190deac322c776ce3565461cc702 GIT binary patch literal 21903 zcmZU*c_38b_Xm7uu?|9Zi9(iy7E3CI7FtC1-Ds12vP9OIN~DFPRI-$Wtd%v(Oj@*4 z)~q9i$dWzF%zN(W`~7|2_x-Eo-uv9=p65KD^Esb$p1EXx*qEPJiWfl;{{1F zf5jr)obbnVNb>@M$RYdp7+Qt6jCS+f7HO$`^M_S=DefF*53z<<>gvI+#tMbg>y8|I z6}$f2(c?$x9JW?YL_-ckD>BYdC^iExA8Xik?ycw*sbuBbIT$U>W@QQddcnQ@l?}Ot z)U>p;U%#@Rdz~Gr)Yr3Y84T|oZ#IpvbRJAHOu;M2VR%f4*h{N5FMY7%IY`6`Cs6PT z#8NEX!E2+((JMy`E#6_wd)fb+Ab}A@E=hVSsCaP? z(n9JM2Y=i!8@Lzn`MyWfBYTg5Ǻ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 literal 0 HcmV?d00001 diff --git a/test/fixtures/scale.logarithmic/med-range.js b/test/fixtures/scale.logarithmic/med-range.js new file mode 100644 index 00000000000..a6191fbb101 --- /dev/null +++ b/test/fixtures/scale.logarithmic/med-range.js @@ -0,0 +1,31 @@ +module.exports = { + config: { + type: 'line', + data: { + labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'], + datasets: [{ + backgroundColor: 'red', + borderColor: 'red', + fill: false, + data: [25, 24, 27, 32, 45, 30, 28] + }] + }, + options: { + responsive: true, + scales: { + x: { + display: false, + }, + y: { + type: 'logarithmic', + ticks: { + autoSkip: false + } + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/scale.logarithmic/med-range.png b/test/fixtures/scale.logarithmic/med-range.png new file mode 100644 index 0000000000000000000000000000000000000000..ed9b5bfa7f5ed54de37c3db5bf5447807654390e GIT binary patch literal 23657 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/scale.logarithmic/small-range.js b/test/fixtures/scale.logarithmic/small-range.js new file mode 100644 index 00000000000..d60ed2a1871 --- /dev/null +++ b/test/fixtures/scale.logarithmic/small-range.js @@ -0,0 +1,31 @@ +module.exports = { + config: { + type: 'line', + data: { + labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'], + datasets: [{ + backgroundColor: 'red', + borderColor: 'red', + fill: false, + data: [3, 1, 4, 2, 5, 3, 16] + }] + }, + options: { + responsive: true, + scales: { + x: { + display: false, + }, + y: { + type: 'logarithmic', + ticks: { + autoSkip: false + } + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/scale.logarithmic/small-range.png b/test/fixtures/scale.logarithmic/small-range.png new file mode 100644 index 0000000000000000000000000000000000000000..8ccb0dbdb85bd6ce5213bfea820f334c0fdb0190 GIT binary patch literal 22598 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 Date: Wed, 26 May 2021 17:23:51 +0300 Subject: [PATCH 2/3] Disable autoSkip on reverese test --- test/specs/scale.logarithmic.tests.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/specs/scale.logarithmic.tests.js b/test/specs/scale.logarithmic.tests.js index 9ce9bf80727..d3afbfe2e77 100644 --- a/test/specs/scale.logarithmic.tests.js +++ b/test/specs/scale.logarithmic.tests.js @@ -590,6 +590,7 @@ describe('Logarithmic Scale tests', function() { type: 'logarithmic', reverse: true, ticks: { + autoSkip: false, callback: function(value) { return value; } @@ -600,7 +601,7 @@ describe('Logarithmic Scale tests', function() { }); var scale = chart.scales.y; - expect(getLabels(scale)).toEqual([70, 60, 50, 40, 30, 20, 15, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]); + expect(getLabels(scale)).toEqual([80, 70, 60, 50, 40, 30, 20, 15, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]); expect(scale.start).toEqual(80); expect(scale.end).toEqual(1); }); From 4b77781ae09b1732539c4339e7f222ab65b2494e Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Wed, 26 May 2021 21:09:34 +0300 Subject: [PATCH 3/3] Reduce ticks, fix min --- src/core/core.ticks.js | 2 +- src/scales/scale.logarithmic.js | 4 +-- test/fixtures/scale.logarithmic/min-max.js | 33 ++++++++++++++++++++ test/fixtures/scale.logarithmic/min-max.png | Bin 0 -> 22155 bytes test/specs/core.ticks.tests.js | 4 +-- test/specs/scale.logarithmic.tests.js | 10 +++--- 6 files changed, 43 insertions(+), 10 deletions(-) create mode 100644 test/fixtures/scale.logarithmic/min-max.js create mode 100644 test/fixtures/scale.logarithmic/min-max.png diff --git a/src/core/core.ticks.js b/src/core/core.ticks.js index 8e3908351af..86728b4424a 100644 --- a/src/core/core.ticks.js +++ b/src/core/core.ticks.js @@ -67,7 +67,7 @@ const formatters = { return '0'; } const remain = ticks[index].significand || (tickValue / (Math.pow(10, Math.floor(log10(tickValue))))); - if ([1, 2, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) { + if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) { return formatters.numeric.call(this, tickValue, index, ticks); } return ''; diff --git a/src/scales/scale.logarithmic.js b/src/scales/scale.logarithmic.js index 68c85b0c830..5f064a48281 100644 --- a/src/scales/scale.logarithmic.js +++ b/src/scales/scale.logarithmic.js @@ -50,11 +50,11 @@ function generateTicks(generationOptions, {min, max}) { const start = Math.round((min - base) * precision) / precision; const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10; let significand = Math.floor((start - offset) / Math.pow(10, exp)); - let value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision; + let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision); while (value < max) { ticks.push({value, major: isMajor(value), significand}); if (significand >= 10) { - significand = significand === 10 ? 11 : significand === 11 ? 12 : significand < 15 ? 15 : 20; + significand = significand < 15 ? 15 : 20; } else { significand++; } diff --git a/test/fixtures/scale.logarithmic/min-max.js b/test/fixtures/scale.logarithmic/min-max.js new file mode 100644 index 00000000000..ff577180088 --- /dev/null +++ b/test/fixtures/scale.logarithmic/min-max.js @@ -0,0 +1,33 @@ +module.exports = { + config: { + type: 'line', + data: { + labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'], + datasets: [{ + backgroundColor: 'red', + borderColor: 'red', + fill: false, + data: [250, 240, 270, 320, 450, 300, 280] + }] + }, + options: { + responsive: true, + scales: { + x: { + display: false, + }, + y: { + type: 'logarithmic', + min: 233, + max: 471, + ticks: { + autoSkip: false + } + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/scale.logarithmic/min-max.png b/test/fixtures/scale.logarithmic/min-max.png new file mode 100644 index 0000000000000000000000000000000000000000..c5e582f481c4710df12da4833e99bd585c4df590 GIT binary patch literal 22155 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