From e5725c661a999ce1d207d6eeb61edc59fa2cecf9 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Tue, 25 Jun 2024 10:58:35 +0200 Subject: [PATCH 01/34] Property `drawminorticklabel` for drawing the label for each minor tick n positions away from a major tick - has no effect for category/multicategory/log axes - has no effect if tickformat frequency incompatible with minor tick frequency --- src/constants/numerical.js | 2 +- src/plots/cartesian/axes.js | 140 ++++++++++++++++++----- src/plots/cartesian/axis_defaults.js | 4 + src/plots/cartesian/layout_attributes.js | 9 ++ test/plot-schema.json | 10 ++ 5 files changed, 137 insertions(+), 28 deletions(-) diff --git a/src/constants/numerical.js b/src/constants/numerical.js index e7e0a4febfe..aeaa09e5efa 100644 --- a/src/constants/numerical.js +++ b/src/constants/numerical.js @@ -37,7 +37,7 @@ module.exports = { ONEHOUR: 3600000, ONEMIN: 60000, ONESEC: 1000, - + ONEMICROSEC: 0.001, /* * For fast conversion btwn world calendars and epoch ms, the Julian Day Number * of the unix epoch. From calendars.instance().newDate(1970, 1, 1).toJD() diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index c6d2c478ac8..109c1dff0d3 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -31,6 +31,7 @@ var HALFDAY = ONEDAY / 2; var ONEHOUR = constants.ONEHOUR; var ONEMIN = constants.ONEMIN; var ONESEC = constants.ONESEC; +var ONEMICROSEC = constants.ONEMICROSEC; var MINUS_SIGN = constants.MINUS_SIGN; var BADNUM = constants.BADNUM; @@ -908,7 +909,7 @@ axes.calcTicks = function calcTicks(ax, opts) { var calendar = ax.calendar; var ticklabelstep = ax.ticklabelstep; var isPeriod = ax.ticklabelmode === 'period'; - + var drawMinorTickLabel = ax.drawminorticklabel; var rng = Lib.simpleMap(ax.range, ax.r2l, undefined, undefined, opts); var axrev = (rng[1] < rng[0]); var minRange = Math.min(rng[0], rng[1]); @@ -921,6 +922,9 @@ axes.calcTicks = function calcTicks(ax, opts) { var tickVals = []; var minorTickVals = []; + // all ticks for which labels are drawn which is not necessarily the major ticks when + // `drawminorticklabel` is set. + var labelTickVals = []; var hasMinor = ax.minor && (ax.minor.ticks || ax.minor.showgrid); @@ -1075,6 +1079,47 @@ axes.calcTicks = function calcTicks(ax, opts) { } } + // check if drawMinorTickLabel makes sense, otherwise ignore it + if(!minorTickVals || minorTickVals.length < 2) { + drawMinorTickLabel = false; + } else { + var diff = minorTickVals[1].value - minorTickVals[0].value; + if(!periodCompatibleWithTickformat(diff, ax.tickformat)) { + drawMinorTickLabel = false; + } + } + // Determine for which ticks to draw labels + if(!drawMinorTickLabel) { + labelTickVals = tickVals; + } else { + // Collect and sort all major and minor ticks, to find the minor ticks `drawMinorTickLabel` + // steps away from each major tick. For those minor ticks we want to draw the label. + + var allTickVals = tickVals.concat(minorTickVals); + if(isPeriod && tickVals.length) { + // first major tick was just added for period handling + allTickVals = allTickVals.slice(1); + } + allTickVals = + allTickVals + .sort(function(a, b) { return a.value - b.value; }) + .filter(function(tick, index, self) { + return index === 0 || tick.value !== self[index - 1].value; + }); + + var majorTickIndices = + allTickVals + .map(function(item, index) { return item.minor === undefined ? index : null; }) + .filter(function(index) { return index !== null; }); + + majorTickIndices.forEach(function(majorIdx) { + var minorIdx = majorIdx + drawMinorTickLabel; + if(minorIdx >= 0 && minorIdx < allTickVals.length) { + labelTickVals.push(allTickVals[minorIdx]); + } + }); + } + if(hasMinor) { var canOverlap = (ax.minor.ticks === 'inside' && ax.ticks === 'outside') || @@ -1108,7 +1153,7 @@ axes.calcTicks = function calcTicks(ax, opts) { } } - if(isPeriod) positionPeriodTicks(tickVals, ax, ax._definedDelta); + if(isPeriod) positionPeriodTicks(labelTickVals, ax, ax._definedDelta); var i; if(ax.rangebreaks) { @@ -1166,38 +1211,44 @@ axes.calcTicks = function calcTicks(ax, opts) { tickVals = tickVals.concat(minorTickVals); - var t, p; + function setTickLabel(ax, tickVal) { + var t = axes.tickText( + ax, + tickVal.value, + false, // hover + tickVal.simpleLabel // noSuffixPrefix + ); + var p = tickVal.periodX; + if(p !== undefined) { + t.periodX = p; + if(p > maxRange || p < minRange) { // hide label if outside the range + if(p > maxRange) t.periodX = maxRange; + if(p < minRange) t.periodX = minRange; + + hideLabel(t); + } + } + return t; + } + + var t; for(i = 0; i < tickVals.length; i++) { var _minor = tickVals[i].minor; var _value = tickVals[i].value; if(_minor) { - minorTicks.push({ - x: _value, - minor: true - }); + if(drawMinorTickLabel && labelTickVals.indexOf(tickVals[i]) !== -1) { + t = setTickLabel(ax, tickVals[i]); + } else { + t = { x: _value }; + } + t.minor = true; + minorTicks.push(t); } else { lastVisibleHead = ax._prevDateHead; - - t = axes.tickText( - ax, - _value, - false, // hover - tickVals[i].simpleLabel // noSuffixPrefix - ); - - p = tickVals[i].periodX; - if(p !== undefined) { - t.periodX = p; - if(p > maxRange || p < minRange) { // hide label if outside the range - if(p > maxRange) t.periodX = maxRange; - if(p < minRange) t.periodX = minRange; - - hideLabel(t); - } - } - - if(tickVals[i].skipLabel) { + t = setTickLabel(ax, tickVals[i]); + if(tickVals[i].skipLabel || + drawMinorTickLabel && labelTickVals.indexOf(tickVals[i]) === -1) { hideLabel(t); } @@ -4523,3 +4574,38 @@ function setShiftVal(ax, axShifts) { axShifts[ax.overlaying][ax.side] : (ax.shift || 0); } + +/** + * Checks if the given period is at least the period described by the tickformat or larger. If that + * is the case, they are compatible, because then the tickformat can be used to describe the period. + * E.g. it doesn't make sense to put a year label on a period spanning only a month. + * @param {number} period in ms + * @param {string} tickformat + * @returns {boolean} + */ +function periodCompatibleWithTickformat(period, tickformat) { + if(/%f/.test(tickformat)) { + if(period < ONEMICROSEC) return false; + } else if(/%L/.test(tickformat)) { + if(period < 1) return false; + } else if(/%[SX]/.test(tickformat)) { + if(period < ONESEC) return false; + } else if(/%M/.test(tickformat)) { + if(period < ONEMIN) return false; + } else if(/%[HI]/.test(tickformat)) { + if(period < ONEHOUR) return false; + } else if(/%p/.test(tickformat)) { + if(period < HALFDAY) return false; + } else if(/%[Aadejuwx]/.test(tickformat)) { + if(period < ONEDAY) return false; + } else if(/%[UVW]/.test(tickformat)) { + if(period < ONEWEEK) return false; + } else if(/%[Bbm]/.test(tickformat)) { + if(period < ONEMINMONTH) return false; + } else if(/%[q]/.test(tickformat)) { + if(period < ONEMINQUARTER) return false; + } else if(/%[Yy]/.test(tickformat)) { + if(period < ONEMINYEAR) return false; + } + return true; +} diff --git a/src/plots/cartesian/axis_defaults.js b/src/plots/cartesian/axis_defaults.js index 0b03fecf376..ef36281d768 100644 --- a/src/plots/cartesian/axis_defaults.js +++ b/src/plots/cartesian/axis_defaults.js @@ -59,6 +59,10 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce, } } + if(axType !== 'category' && axType !== 'multicategory' && axType !== 'log') { + coerce('drawminorticklabel'); + } + var ticklabelposition = ''; if(!options.noTicklabelposition || axType === 'multicategory') { ticklabelposition = Lib.coerce(containerIn, containerOut, { diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index 2532e0c75cd..7797a3f0d42 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -698,6 +698,15 @@ module.exports = { 'In other cases the default is *hide past div*.' ].join(' ') }, + drawminorticklabel: { + valType: 'integer', + editType: 'calc', + description: [ + 'Instead of drawing the major tick label, draw the label for the minor tick', + 'that is n positions away from the major tick. E.g. to always draw the label for the', + 'minor tick before each major tick, choose `drawminorticklabel` -1' + ].join(' ') + }, mirror: { valType: 'enumerated', values: [true, 'ticks', false, 'all', 'allticks'], diff --git a/test/plot-schema.json b/test/plot-schema.json index fd2b1659e37..72041fb37dc 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -14097,6 +14097,11 @@ ], "valType": "info_array" }, + "drawminorticklabel": { + "description": "Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `drawminorticklabel` -1", + "editType": "calc", + "valType": "integer" + }, "dtick": { "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", "editType": "ticks", @@ -15723,6 +15728,11 @@ ], "valType": "info_array" }, + "drawminorticklabel": { + "description": "Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `drawminorticklabel` -1", + "editType": "calc", + "valType": "integer" + }, "dtick": { "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", "editType": "ticks", From 11fd3f18e958234fa016fa998455412bb8b8670a Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Tue, 25 Jun 2024 11:01:27 +0200 Subject: [PATCH 02/34] Ensure correct spacing between ticklabels and ticks when using drawminorticklabel --- src/plots/cartesian/axes.js | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 109c1dff0d3..7239e14cd3c 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -3150,14 +3150,31 @@ axes.makeLabelFns = function(ax, shift, angle) { var isAligned = isBottom || isLeft || isTop || isRight; var insideTickLabels = has('inside'); - var labelsOverTicks = - (ticklabelposition === 'inside' && ax.ticks === 'inside') || - (!insideTickLabels && ax.ticks === 'outside' && ax.tickson !== 'boundaries'); + + var minorTicksInside = ax.minor && ax.minor.ticks === 'inside'; + var minorTicksOutside = ax.minor && ax.minor.ticks === 'outside'; + + var labelsOverMajorTicks = false; + var labelsOverMinorTicks = false; + if(insideTickLabels) { + if(ax.ticks === 'inside') { + labelsOverMajorTicks = true; + } else if(minorTicksInside) { + labelsOverMinorTicks = true; + } + } else { + if(ax.ticks === 'outside' && ax.tickson !== 'boundaries') { + labelsOverMajorTicks = true; + } else if(minorTicksOutside) { + labelsOverMinorTicks = true; + } + } + var labelsOverTicks = labelsOverMajorTicks || labelsOverMinorTicks; var labelStandoff = 0; var labelShift = 0; - var tickLen = labelsOverTicks ? ax.ticklen : 0; + var tickLen = labelsOverMajorTicks ? ax.ticklen : labelsOverMinorTicks ? ax.minor.ticklen : 0; if(insideTickLabels) { tickLen *= -1; } else if(isAligned) { From a3e41af975631bbe6ffd65c9b1a062c7bb2b2129 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Tue, 25 Jun 2024 11:03:23 +0200 Subject: [PATCH 03/34] baseline test mock for drawminorticklabel --- .../zzz_drawminorticklabel_period_axes.json | 187 ++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 test/image/mocks/zzz_drawminorticklabel_period_axes.json diff --git a/test/image/mocks/zzz_drawminorticklabel_period_axes.json b/test/image/mocks/zzz_drawminorticklabel_period_axes.json new file mode 100644 index 00000000000..3d95b9a6465 --- /dev/null +++ b/test/image/mocks/zzz_drawminorticklabel_period_axes.json @@ -0,0 +1,187 @@ +{ + "data": [ + { + "x": [ + "2019-10-01T00:00:00", + "2020-01-01T00:00:00", + "2020-04-01T00:00:00", + "2020-07-01T00:00:00", + "2020-10-01T00:00:00", + "2021-01-01T00:00:00", + "2021-04-01T00:00:00", + "2021-07-01T00:00:00", + "2021-10-01T00:00:00", + "2022-01-01T00:00:00", + "2022-04-01T00:00:00", + "2022-07-01T00:00:00", + "2022-10-01T00:00:00" + ], + "xperiod": "M3", + "xperiodalignment": "middle", + "y": [ + 0, + -2.30469, + -22.1636, + -9.04912, + -5.73645, + -13.9468, + -2.3389, + -0.38651, + 1.666218, + 4.903598, + 6.082659, + 6.040196, + 5.86461 + ], + "type": "bar" + }, + { + "x": [ + "2019-10-01T00:00:00", + "2020-01-01T00:00:00", + "2020-04-01T00:00:00", + "2020-07-01T00:00:00", + "2020-10-01T00:00:00", + "2021-01-01T00:00:00", + "2021-04-01T00:00:00", + "2021-07-01T00:00:00", + "2021-10-01T00:00:00", + "2022-01-01T00:00:00", + "2022-04-01T00:00:00", + "2022-07-01T00:00:00", + "2022-10-01T00:00:00" + ], + "xperiod": "M3", + "xperiodalignment": "middle", + "y": [ + 0, + -0.36063, + 0.095131, + -0.73126, + -1.13661, + -2.23413, + -3.79368, + -5.15376, + -6.65433, + -8.4567, + -10.2163, + -11.2734, + -12.1921 + ], + "type": "bar" + }, + { + "x": [ + "2019-10-01T00:00:00", + "2020-01-01T00:00:00", + "2020-04-01T00:00:00", + "2020-07-01T00:00:00", + "2020-10-01T00:00:00", + "2021-01-01T00:00:00", + "2021-04-01T00:00:00", + "2021-07-01T00:00:00", + "2021-10-01T00:00:00", + "2022-01-01T00:00:00", + "2022-04-01T00:00:00", + "2022-07-01T00:00:00", + "2022-10-01T00:00:00" + ], + "xperiod": "M3", + "xperiodalignment": "middle", + "y": [ + 0, + 0.313137, + 17.67733, + 8.389384, + 3.892285, + 20.28805, + 7.832283, + 6.055129, + 4.563399, + 4.248476, + 4.281987, + 4.308401, + 4.948447 + ], + "type": "bar", + "xaxis": "x2" + }, + { + "x": [ + "2019-10-01T00:00:00", + "2020-01-01T00:00:00", + "2020-04-01T00:00:00", + "2020-07-01T00:00:00", + "2020-10-01T00:00:00", + "2021-01-01T00:00:00", + "2021-04-01T00:00:00", + "2021-07-01T00:00:00", + "2021-10-01T00:00:00", + "2022-01-01T00:00:00", + "2022-04-01T00:00:00", + "2022-07-01T00:00:00", + "2022-10-01T00:00:00" + ], + "xperiod": "M3", + "xperiodalignment": "middle", + "y": [ + 0, + 0.76038, + -6.86916, + -0.92843, + 1.618134, + -2.89594, + 2.360814, + 4.274154, + 5.982815, + 5.197389, + 6.249781, + 7.882427, + 8.592399 + ], + "type": "bar", + "xaxis": "x2" + } + ], + "layout": { + "bargap": 0.1, + "xaxis": { + "title": { + "text": "xaxis: `drawminorticklabel` is ignored because tickformat is incompatible with minor ticks" + }, + "dtick": "M12", + "minor": { + "dtick": "M3", + "ticklen": 9, + "tickmode": "linear", + "ticks": "inside" + }, + "tickformat": "%Y", + "ticklabelmode": "period", + "drawminorticklabel": -1, + "ticklen": 18, + "type": "date" + }, + "xaxis2": { + "title": { + "text": "xaxis2: Label of minor tick before each major tick is drawn" + }, + "dtick": "M12", + "minor": { + "dtick": "M1", + "ticklen": 9, + "tickmode": "linear", + "ticks": "outside" + }, + "tickformat": "%b %Y", + "drawminorticklabel": -1, + "tickangle": 30, + "ticklabelmode": "period", + "ticklen": 18, + "ticks": "inside", + "side": "top", + "overlaying": "x", + "type": "date" + } + } +} \ No newline at end of file From f7d9abfeafa211cebdd41b37b77cf10c500bf7ed Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Tue, 25 Jun 2024 11:20:06 +0200 Subject: [PATCH 04/34] Draftlog for PR 7036 (drawminorticklabel) --- draftlogs/7036_add.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/7036_add.md diff --git a/draftlogs/7036_add.md b/draftlogs/7036_add.md new file mode 100644 index 00000000000..2922b85bcc4 --- /dev/null +++ b/draftlogs/7036_add.md @@ -0,0 +1 @@ + - Add axis property `drawminorticklabel` for drawing the label for each minor tick n positions away from a major tick [[#7036](https://github.com/plotly/plotly.js/pull/7036)] \ No newline at end of file From 1f52f4e9fbed1ec843b3ee0ce3c49bc27c0b776f Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Tue, 25 Jun 2024 14:34:13 +0200 Subject: [PATCH 05/34] "noDrawminorticklabel" exception for gl3d plots --- src/plots/cartesian/axis_defaults.js | 2 +- src/plots/gl3d/layout/axis_defaults.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plots/cartesian/axis_defaults.js b/src/plots/cartesian/axis_defaults.js index ef36281d768..1862e2047f9 100644 --- a/src/plots/cartesian/axis_defaults.js +++ b/src/plots/cartesian/axis_defaults.js @@ -59,7 +59,7 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce, } } - if(axType !== 'category' && axType !== 'multicategory' && axType !== 'log') { + if(!options.noDrawminorticklabel && axType !== 'category' && axType !== 'multicategory' && axType !== 'log') { coerce('drawminorticklabel'); } diff --git a/src/plots/gl3d/layout/axis_defaults.js b/src/plots/gl3d/layout/axis_defaults.js index 7bbc87249d7..d1a3daa5cb8 100644 --- a/src/plots/gl3d/layout/axis_defaults.js +++ b/src/plots/gl3d/layout/axis_defaults.js @@ -42,6 +42,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, options) { data: options.data, showGrid: true, noAutotickangles: true, + noDrawminorticklabel: true, noTickson: true, noTicklabelmode: true, noTicklabelstep: true, From 35a7f51e5ef7465deea77ff96b69d2ad263202b7 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Thu, 27 Jun 2024 16:12:20 +0200 Subject: [PATCH 06/34] Fix failing source-syntax check: missing newline in mock --- test/image/mocks/zzz_drawminorticklabel_period_axes.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/image/mocks/zzz_drawminorticklabel_period_axes.json b/test/image/mocks/zzz_drawminorticklabel_period_axes.json index 3d95b9a6465..1e60aec0fda 100644 --- a/test/image/mocks/zzz_drawminorticklabel_period_axes.json +++ b/test/image/mocks/zzz_drawminorticklabel_period_axes.json @@ -184,4 +184,4 @@ "type": "date" } } -} \ No newline at end of file +} From 0a80d24597fed7ee73ab53c58cc4e3b03e28fd62 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Thu, 27 Jun 2024 16:14:22 +0200 Subject: [PATCH 07/34] Restrict drawminorticklabel to period axes --- src/plots/cartesian/axis_defaults.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plots/cartesian/axis_defaults.js b/src/plots/cartesian/axis_defaults.js index 1862e2047f9..438b2986bee 100644 --- a/src/plots/cartesian/axis_defaults.js +++ b/src/plots/cartesian/axis_defaults.js @@ -59,7 +59,7 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce, } } - if(!options.noDrawminorticklabel && axType !== 'category' && axType !== 'multicategory' && axType !== 'log') { + if(!options.noDrawminorticklabel && axType === 'date' && containerOut.ticklabelmode === 'period') { coerce('drawminorticklabel'); } From 1e7ebc319fbecfdf9c2ca83692071e4f24af44c2 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Thu, 27 Jun 2024 16:24:44 +0200 Subject: [PATCH 08/34] Revert "Ensure correct spacing between ticklabels and ticks when using drawminorticklabel" This reverts commit 11fd3f18e958234fa016fa998455412bb8b8670a. I thought label overlap with minor ticks was something I introduced with drawminorticklabel, but this was also possible before and is sometimes desired (check e.g. baseline image 24.png) --- src/plots/cartesian/axes.js | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 7239e14cd3c..109c1dff0d3 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -3150,31 +3150,14 @@ axes.makeLabelFns = function(ax, shift, angle) { var isAligned = isBottom || isLeft || isTop || isRight; var insideTickLabels = has('inside'); - - var minorTicksInside = ax.minor && ax.minor.ticks === 'inside'; - var minorTicksOutside = ax.minor && ax.minor.ticks === 'outside'; - - var labelsOverMajorTicks = false; - var labelsOverMinorTicks = false; - if(insideTickLabels) { - if(ax.ticks === 'inside') { - labelsOverMajorTicks = true; - } else if(minorTicksInside) { - labelsOverMinorTicks = true; - } - } else { - if(ax.ticks === 'outside' && ax.tickson !== 'boundaries') { - labelsOverMajorTicks = true; - } else if(minorTicksOutside) { - labelsOverMinorTicks = true; - } - } - var labelsOverTicks = labelsOverMajorTicks || labelsOverMinorTicks; + var labelsOverTicks = + (ticklabelposition === 'inside' && ax.ticks === 'inside') || + (!insideTickLabels && ax.ticks === 'outside' && ax.tickson !== 'boundaries'); var labelStandoff = 0; var labelShift = 0; - var tickLen = labelsOverMajorTicks ? ax.ticklen : labelsOverMinorTicks ? ax.minor.ticklen : 0; + var tickLen = labelsOverTicks ? ax.ticklen : 0; if(insideTickLabels) { tickLen *= -1; } else if(isAligned) { From 0671ebb2572f8c8cfc4b813473a74b718d6552d0 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Thu, 27 Jun 2024 16:37:28 +0200 Subject: [PATCH 09/34] Update mock after restricting new property to period axes --- test/image/mocks/zzz_drawminorticklabel_period_axes.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/image/mocks/zzz_drawminorticklabel_period_axes.json b/test/image/mocks/zzz_drawminorticklabel_period_axes.json index 1e60aec0fda..8b52f1da234 100644 --- a/test/image/mocks/zzz_drawminorticklabel_period_axes.json +++ b/test/image/mocks/zzz_drawminorticklabel_period_axes.json @@ -164,7 +164,7 @@ }, "xaxis2": { "title": { - "text": "xaxis2: Label of minor tick before each major tick is drawn" + "text": "xaxis2: Period before each major tick is labeled" }, "dtick": "M12", "minor": { @@ -175,7 +175,7 @@ }, "tickformat": "%b %Y", "drawminorticklabel": -1, - "tickangle": 30, + "tickangle": 90, "ticklabelmode": "period", "ticklen": 18, "ticks": "inside", From 6fcda1ae5620ef150573aeae0c34400105709eb9 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Thu, 27 Jun 2024 17:40:16 +0200 Subject: [PATCH 10/34] baseline image for zzz_drawminorticklabel_period_axes.png --- .../zzz_drawminorticklabel_period_axes.png | Bin 0 -> 34184 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/image/baselines/zzz_drawminorticklabel_period_axes.png diff --git a/test/image/baselines/zzz_drawminorticklabel_period_axes.png b/test/image/baselines/zzz_drawminorticklabel_period_axes.png new file mode 100644 index 0000000000000000000000000000000000000000..ebcedf1e3a93589747b250cfc7ab46ec56863558 GIT binary patch literal 34184 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
uU@T>RX7lacRHl&o8?3jRYNV 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 literal 0 HcmV?d00001 From 21a573cb4b0ee0c621eb8850ccee3a147c4b7588 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Fri, 5 Jul 2024 05:49:33 +0200 Subject: [PATCH 11/34] Refactor periodCompatibleWithTickformat to make behavior clearer. --- src/plots/cartesian/axes.js | 38 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 109c1dff0d3..a1d858fa859 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -4584,28 +4584,18 @@ function setShiftVal(ax, axShifts) { * @returns {boolean} */ function periodCompatibleWithTickformat(period, tickformat) { - if(/%f/.test(tickformat)) { - if(period < ONEMICROSEC) return false; - } else if(/%L/.test(tickformat)) { - if(period < 1) return false; - } else if(/%[SX]/.test(tickformat)) { - if(period < ONESEC) return false; - } else if(/%M/.test(tickformat)) { - if(period < ONEMIN) return false; - } else if(/%[HI]/.test(tickformat)) { - if(period < ONEHOUR) return false; - } else if(/%p/.test(tickformat)) { - if(period < HALFDAY) return false; - } else if(/%[Aadejuwx]/.test(tickformat)) { - if(period < ONEDAY) return false; - } else if(/%[UVW]/.test(tickformat)) { - if(period < ONEWEEK) return false; - } else if(/%[Bbm]/.test(tickformat)) { - if(period < ONEMINMONTH) return false; - } else if(/%[q]/.test(tickformat)) { - if(period < ONEMINQUARTER) return false; - } else if(/%[Yy]/.test(tickformat)) { - if(period < ONEMINYEAR) return false; - } - return true; + return ( + /%f/.test(tickformat) ? period >= ONEMICROSEC : + /%L/.test(tickformat) ? period >= 1 : + /%[SX]/.test(tickformat) ? period >= ONESEC : + /%M/.test(tickformat) ? period >= ONEMIN : + /%[HI]/.test(tickformat) ? period >= ONEHOUR : + /%p/.test(tickformat) ? period >= HALFDAY : + /%[Aadejuwx]/.test(tickformat) ? period >= ONEDAY : + /%[UVW]/.test(tickformat) ? period >= ONEWEEK : + /%[Bbm]/.test(tickformat) ? period >= ONEMINMONTH : + /%[q]/.test(tickformat) ? period >= ONEMINQUARTER : + /%[Yy]/.test(tickformat) ? period >= ONEMINYEAR : + true + ); } From e511fc8c9794490596bd5b3fd3a6200725af12df Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Thu, 4 Jul 2024 16:57:58 +0200 Subject: [PATCH 12/34] Note about possible future extension of the minor tick label customization --- src/plots/cartesian/layout_attributes.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index 7797a3f0d42..0ba32f6c481 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -699,6 +699,7 @@ module.exports = { ].join(' ') }, drawminorticklabel: { + // In the future maybe add `arrayOk: true` for labeling several minor ticks, e.g. [-1, 0, 1] valType: 'integer', editType: 'calc', description: [ From 7585121289b43664960bfe1b0ac6806730ab2727 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Fri, 5 Jul 2024 06:45:13 +0200 Subject: [PATCH 13/34] Honor ticklabelstep also when using drawminorticklabel --- src/plots/cartesian/axes.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index a1d858fa859..265ba82017f 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -1109,7 +1109,9 @@ axes.calcTicks = function calcTicks(ax, opts) { var majorTickIndices = allTickVals - .map(function(item, index) { return item.minor === undefined ? index : null; }) + .map(function(item, index) { + return item.minor === undefined && !item.skipLabel ? index : null; + }) .filter(function(index) { return index !== null; }); majorTickIndices.forEach(function(majorIdx) { From e2493a667d355c3e707c2ec32cfca3a712213c4c Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Fri, 5 Jul 2024 06:45:49 +0200 Subject: [PATCH 14/34] drawminorticklabel mock for date_axes_period, date_axes_period2, date_axes-ticklabelstep --- ...axes-ticklabelstep-drawminorticklabel.json | 231 ++++++++++++++++++ ..._date_axes_period2_drawminorticklabel.json | 224 +++++++++++++++++ ...z_date_axes_period_drawminorticklabel.json | 224 +++++++++++++++++ 3 files changed, 679 insertions(+) create mode 100644 test/image/mocks/zzz_date_axes-ticklabelstep-drawminorticklabel.json create mode 100644 test/image/mocks/zzz_date_axes_period2_drawminorticklabel.json create mode 100644 test/image/mocks/zzz_date_axes_period_drawminorticklabel.json diff --git a/test/image/mocks/zzz_date_axes-ticklabelstep-drawminorticklabel.json b/test/image/mocks/zzz_date_axes-ticklabelstep-drawminorticklabel.json new file mode 100644 index 00000000000..760ad2a1219 --- /dev/null +++ b/test/image/mocks/zzz_date_axes-ticklabelstep-drawminorticklabel.json @@ -0,0 +1,231 @@ +{ + "data": [ + { + "x": [ + "1900-01-01", + "2000-01-01", + "2100-01-01" + ], + "y": [ + 1, + 3, + 2 + ] + }, + { + "x": [ + "2013-05-01", + "2013-09-01", + "2014-01-01" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x2", + "yaxis": "y2" + }, + { + "x": [ + "2013-11-17", + "2013-12-15", + "2014-01-12" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x3", + "yaxis": "y3" + }, + { + "x": [ + "2013-01-01", + "2013-01-02", + "2013-01-03" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x4", + "yaxis": "y4" + }, + { + "x": [ + "2013-07-01 18:00", + "2013-07-02 00:00", + "2013-07-02 06:00" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x5", + "yaxis": "y5" + }, + { + "x": [ + "2013-01-01 23:59", + "2013-01-02 00:00", + "2013-01-02 00:01" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x6", + "yaxis": "y6" + }, + { + "x": [ + "2013-07-01 23:59:59", + "2013-07-02 00:00:00", + "2013-07-02 00:00:01" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x7", + "yaxis": "y7" + } + ], + "layout": { + "showlegend": false, + "width": 600, + "height": 500, + "yaxis": { + "ticklabelstep": 2, + "domain": [ + 0, + 0.04 + ] + }, + "yaxis2": { + "ticklabelstep": 2, + "domain": [ + 0.16, + 0.2 + ] + }, + "yaxis3": { + "ticklabelstep": 2, + "domain": [ + 0.32, + 0.36 + ] + }, + "yaxis4": { + "ticklabelstep": 2, + "domain": [ + 0.48, + 0.52 + ] + }, + "yaxis5": { + "ticklabelstep": 2, + "domain": [ + 0.64, + 0.68 + ] + }, + "yaxis6": { + "ticklabelstep": 2, + "domain": [ + 0.80, + 0.84 + ] + }, + "yaxis7": { + "ticklabelstep": 2, + "domain": [ + 0.96, + 1 + ] + }, + "xaxis": { + "ticklabelstep": 2, + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "tickcolor": "red", + "ticklabelmode": "period", + "drawminorticklabel": 4, + "anchor": "y" + }, + "xaxis2": { + "ticklabelstep": 2, + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "tickcolor": "red", + "ticklabelmode": "period", + "anchor": "y2", + "drawminorticklabel": 1 + }, + "xaxis3": { + "ticklabelstep": 2, + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "tickcolor": "red", + "ticklabelmode": "period", + "anchor": "y3", + "drawminorticklabel": 1 + }, + "xaxis4": { + "ticklabelstep": 2, + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "tickcolor": "red", + "ticklabelmode": "period", + "anchor": "y4", + "drawminorticklabel": 1 + }, + "xaxis5": { + "ticklabelstep": 2, + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "tickcolor": "red", + "ticklabelmode": "period", + "anchor": "y5", + "drawminorticklabel": -2 + }, + "xaxis6": { + "ticklabelstep": 2, + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "tickcolor": "red", + "ticklabelmode": "period", + "anchor": "y6", + "drawminorticklabel": 2 + }, + "xaxis7": { + "ticklabelstep": 2, + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "tickcolor": "red", + "ticklabelmode": "period", + "anchor": "y7", + "drawminorticklabel": -3 + } + } +} \ No newline at end of file diff --git a/test/image/mocks/zzz_date_axes_period2_drawminorticklabel.json b/test/image/mocks/zzz_date_axes_period2_drawminorticklabel.json new file mode 100644 index 00000000000..e4c7efcc583 --- /dev/null +++ b/test/image/mocks/zzz_date_axes_period2_drawminorticklabel.json @@ -0,0 +1,224 @@ +{ + "data": [ + { + "x": [ + "2017-01-01", + "2023-01-01" + ], + "y": [ + 0, + 1 + ] + }, + { + "x": [ + "2017-01-01", + "2023-01-01" + ], + "y": [ + 0, + 1 + ], + "xaxis": "x2", + "yaxis": "y2" + }, + { + "x": [ + "2017-01-01", + "2023-01-01" + ], + "y": [ + 0, + 1 + ], + "xaxis": "x3", + "yaxis": "y3" + }, + { + "x": [ + "2017-01-01", + "2023-01-01" + ], + "y": [ + 0, + 1 + ], + "xaxis": "x4", + "yaxis": "y4" + }, + { + "x": [ + "2017-01-01", + "2023-01-01" + ], + "y": [ + 0, + 1 + ], + "xaxis": "x5", + "yaxis": "y5" + }, + { + "x": [ + "2017-01-01", + "2023-01-01" + ], + "y": [ + 0, + 1 + ], + "xaxis": "x6", + "yaxis": "y6" + }, + { + "x": [ + "2017-01-01", + "2023-01-01" + ], + "y": [ + 0, + 1 + ], + "xaxis": "x7", + "yaxis": "y7" + } + ], + "layout": { + "showlegend": false, + "width": 600, + "height": 500, + "yaxis": { + "domain": [ + 0, + 0.04 + ] + }, + "yaxis2": { + "domain": [ + 0.16, + 0.2 + ] + }, + "yaxis3": { + "domain": [ + 0.32, + 0.36 + ] + }, + "yaxis4": { + "domain": [ + 0.48, + 0.52 + ] + }, + "yaxis5": { + "domain": [ + 0.64, + 0.68 + ] + }, + "yaxis6": { + "domain": [ + 0.80, + 0.84 + ] + }, + "yaxis7": { + "domain": [ + 0.96, + 1 + ] + }, + "xaxis": { + "minor": { "ticks": "inside" }, + "tickcolor": "black", + "gridcolor": "orange", + "range": [ + "2019-12-24", + "2020-01-06" + ], + "ticklabelmode": "period", + "tickformat": "%b %d, %Y", + "drawminorticklabel": 1, + "tickangle": 30 + }, + "xaxis2": { + "minor": { "ticks": "inside" }, + "tickcolor": "black", + "gridcolor": "orange", + "range": [ + "2019-12-29", + "2020-01-04" + ], + "ticklabelmode": "period", + "anchor": "y2", + "drawminorticklabel": -1, + "tickangle": 20 + }, + "xaxis3": { + "minor": { "ticks": "inside" }, + "tickcolor": "black", + "gridcolor": "orange", + "range": [ + "2020-01-03", + "2019-12-28" + ], + "ticklabelmode": "period", + "anchor": "y3", + "drawminorticklabel": 2, + "tickangle": 20 + }, + "xaxis4": { + "minor": { "ticks": "inside" }, + "tickcolor": "black", + "gridcolor": "orange", + "range": [ + "2020-03-01", + "2020-11-01" + ], + "ticklabelmode": "period", + "anchor": "y4", + "drawminorticklabel": 1, + "tickangle": 20 + }, + "xaxis5": { + "minor": { "ticks": "inside" }, + "tickcolor": "black", + "gridcolor": "orange", + "range": [ + "2016-09-01", + "2017-06-01" + ], + "ticklabelmode": "period", + "anchor": "y5", + "drawminorticklabel": -1, + "tickangle": 20 + }, + "xaxis6": { + "minor": { "ticks": "inside" }, + "tickcolor": "black", + "gridcolor": "orange", + "range": [ + "2016-05-01", + "2019-09-01" + ], + "ticklabelmode": "period", + "anchor": "y6", + "drawminorticklabel": 2, + "tickangle": 20 + }, + "xaxis7": { + "minor": { "ticks": "inside" }, + "tickcolor": "black", + "gridcolor": "orange", + "range": [ + "2016-05-01", + "2021-09-01" + ], + "ticklabelmode": "period", + "anchor": "y7", + "drawminorticklabel": -2, + "tickangle": 20 + } + } +} diff --git a/test/image/mocks/zzz_date_axes_period_drawminorticklabel.json b/test/image/mocks/zzz_date_axes_period_drawminorticklabel.json new file mode 100644 index 00000000000..3a52674a323 --- /dev/null +++ b/test/image/mocks/zzz_date_axes_period_drawminorticklabel.json @@ -0,0 +1,224 @@ +{ + "data": [ + { + "x": [ + "1900-01-01", + "2000-01-01", + "2100-01-01" + ], + "y": [ + 1, + 3, + 2 + ] + }, + { + "x": [ + "2013-05-01", + "2013-09-01", + "2014-01-01" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x2", + "yaxis": "y2" + }, + { + "x": [ + "2013-11-17", + "2013-12-15", + "2014-01-12" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x3", + "yaxis": "y3" + }, + { + "x": [ + "2013-01-01", + "2013-01-02", + "2013-01-03" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x4", + "yaxis": "y4" + }, + { + "x": [ + "2013-07-01 18:00", + "2013-07-02 00:00", + "2013-07-02 06:00" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x5", + "yaxis": "y5" + }, + { + "x": [ + "2013-01-01 23:59", + "2013-01-02 00:00", + "2013-01-02 00:01" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x6", + "yaxis": "y6" + }, + { + "x": [ + "2013-07-01 23:59:59", + "2013-07-02 00:00:00", + "2013-07-02 00:00:01" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x7", + "yaxis": "y7" + } + ], + "layout": { + "showlegend": false, + "width": 600, + "height": 500, + "yaxis": { + "domain": [ + 0, + 0.04 + ] + }, + "yaxis2": { + "domain": [ + 0.16, + 0.2 + ] + }, + "yaxis3": { + "domain": [ + 0.32, + 0.36 + ] + }, + "yaxis4": { + "domain": [ + 0.48, + 0.52 + ] + }, + "yaxis5": { + "domain": [ + 0.64, + 0.68 + ] + }, + "yaxis6": { + "domain": [ + 0.80, + 0.84 + ] + }, + "yaxis7": { + "domain": [ + 0.96, + 1 + ] + }, + "xaxis": { + "anchor": "y", + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "ticks": "outside", + "ticklabelmode": "period", + "tickcolor": "red", + "drawminorticklabel": 4 + }, + "xaxis2": { + "anchor": "y2", + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "ticks": "outside", + "ticklabelmode": "period", + "tickcolor": "red", + "drawminorticklabel": -1 + }, + "xaxis3": { + "anchor": "y3", + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "ticks": "outside", + "ticklabelmode": "period", + "tickcolor": "red", + "drawminorticklabel": -1 + }, + "xaxis4": { + "anchor": "y4", + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "ticks": "outside", + "ticklabelmode": "period", + "tickcolor": "red", + "drawminorticklabel": 2 + }, + "xaxis5": { + "anchor": "y5", + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "ticks": "outside", + "ticklabelmode": "period", + "tickcolor": "red", + "drawminorticklabel": 1 + }, + "xaxis6": { + "anchor": "y6", + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "ticks": "outside", + "ticklabelmode": "period", + "tickcolor": "red", + "drawminorticklabel": -3 + }, + "xaxis7": { + "anchor": "y7", + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "ticks": "outside", + "ticklabelmode": "period", + "tickcolor": "red", + "drawminorticklabel": 5 + } + } +} \ No newline at end of file From 00971f1b16eb4c66d1337e4b27526c70c75e5e50 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Fri, 5 Jul 2024 06:54:22 +0200 Subject: [PATCH 15/34] Mention in description that drawminorticklabel only applies to period axes --- src/plots/cartesian/layout_attributes.js | 1 + test/plot-schema.json | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index 0ba32f6c481..62c3b15a60b 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -703,6 +703,7 @@ module.exports = { valType: 'integer', editType: 'calc', description: [ + 'Only for date axes with `ticklabelmode` *period*.', 'Instead of drawing the major tick label, draw the label for the minor tick', 'that is n positions away from the major tick. E.g. to always draw the label for the', 'minor tick before each major tick, choose `drawminorticklabel` -1' diff --git a/test/plot-schema.json b/test/plot-schema.json index 72041fb37dc..44907e17d0c 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -14098,7 +14098,7 @@ "valType": "info_array" }, "drawminorticklabel": { - "description": "Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `drawminorticklabel` -1", + "description": "Only for date axes with `ticklabelmode` *period*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `drawminorticklabel` -1", "editType": "calc", "valType": "integer" }, @@ -15729,7 +15729,7 @@ "valType": "info_array" }, "drawminorticklabel": { - "description": "Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `drawminorticklabel` -1", + "description": "Only for date axes with `ticklabelmode` *period*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `drawminorticklabel` -1", "editType": "calc", "valType": "integer" }, From 6f5ba12cf800968c1096a1428d93a3f2b703d0e0 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Fri, 5 Jul 2024 07:09:25 +0200 Subject: [PATCH 16/34] Missing trailing newlines for mocks --- .../mocks/zzz_date_axes-ticklabelstep-drawminorticklabel.json | 2 +- test/image/mocks/zzz_date_axes_period_drawminorticklabel.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/image/mocks/zzz_date_axes-ticklabelstep-drawminorticklabel.json b/test/image/mocks/zzz_date_axes-ticklabelstep-drawminorticklabel.json index 760ad2a1219..6375312356a 100644 --- a/test/image/mocks/zzz_date_axes-ticklabelstep-drawminorticklabel.json +++ b/test/image/mocks/zzz_date_axes-ticklabelstep-drawminorticklabel.json @@ -228,4 +228,4 @@ "drawminorticklabel": -3 } } -} \ No newline at end of file +} diff --git a/test/image/mocks/zzz_date_axes_period_drawminorticklabel.json b/test/image/mocks/zzz_date_axes_period_drawminorticklabel.json index 3a52674a323..935097cfb70 100644 --- a/test/image/mocks/zzz_date_axes_period_drawminorticklabel.json +++ b/test/image/mocks/zzz_date_axes_period_drawminorticklabel.json @@ -221,4 +221,4 @@ "drawminorticklabel": 5 } } -} \ No newline at end of file +} From cd7e7c17e45eb15bf08eb4fe947775758e733420 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Fri, 5 Jul 2024 07:12:40 +0200 Subject: [PATCH 17/34] Baseline images for new drawminorticklabel mocks --- ...te_axes-ticklabelstep-drawminorticklabel.png | Bin 0 -> 40959 bytes ...zzz_date_axes_period2_drawminorticklabel.png | Bin 0 -> 42997 bytes .../zzz_date_axes_period_drawminorticklabel.png | Bin 0 -> 45478 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/image/baselines/zzz_date_axes-ticklabelstep-drawminorticklabel.png create mode 100644 test/image/baselines/zzz_date_axes_period2_drawminorticklabel.png create mode 100644 test/image/baselines/zzz_date_axes_period_drawminorticklabel.png diff --git a/test/image/baselines/zzz_date_axes-ticklabelstep-drawminorticklabel.png b/test/image/baselines/zzz_date_axes-ticklabelstep-drawminorticklabel.png new file mode 100644 index 0000000000000000000000000000000000000000..fd46373f3b0dda3c729b1440c21f719fa9518963 GIT binary patch literal 40959 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 Y-`KLbD*IB00Rs?ty85}Sb4q9e0L7$K8~^|S literal 0 HcmV?d00001 diff --git a/test/image/baselines/zzz_date_axes_period2_drawminorticklabel.png b/test/image/baselines/zzz_date_axes_period2_drawminorticklabel.png new file mode 100644 index 0000000000000000000000000000000000000000..493508bb7823b1572e1cf559ac80b37daff501f2 GIT binary patch literal 42997 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
_TGP0+-4~yhp|#p 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 literal 0 HcmV?d00001 From 0019cb041a255a83fac4d682169a19b0bea4bbd7 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Mon, 8 Jul 2024 12:11:04 +0200 Subject: [PATCH 18/34] =?UTF-8?q?Rename=20drawminorticklabel=20=E2=86=92?= =?UTF-8?q?=20ticklabelindex?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- draftlogs/7036_add.md | 2 +- src/plots/cartesian/axes.js | 20 +++++++++--------- src/plots/cartesian/axis_defaults.js | 4 ++-- src/plots/cartesian/layout_attributes.js | 4 ++-- src/plots/gl3d/layout/axis_defaults.js | 2 +- ...ate_axes-ticklabelstep-ticklabelindex.png} | Bin ... zzz_date_axes_period2_ticklabelindex.png} | Bin ...> zzz_date_axes_period_ticklabelindex.png} | Bin ...png => zzz_ticklabelindex_period_axes.png} | Bin ...te_axes-ticklabelstep-ticklabelindex.json} | 14 ++++++------ ...zzz_date_axes_period2_ticklabelindex.json} | 14 ++++++------ ... zzz_date_axes_period_ticklabelindex.json} | 14 ++++++------ ...on => zzz_ticklabelindex_period_axes.json} | 6 +++--- test/plot-schema.json | 20 +++++++++--------- 14 files changed, 50 insertions(+), 50 deletions(-) rename test/image/baselines/{zzz_date_axes-ticklabelstep-drawminorticklabel.png => zzz_date_axes-ticklabelstep-ticklabelindex.png} (100%) rename test/image/baselines/{zzz_date_axes_period2_drawminorticklabel.png => zzz_date_axes_period2_ticklabelindex.png} (100%) rename test/image/baselines/{zzz_date_axes_period_drawminorticklabel.png => zzz_date_axes_period_ticklabelindex.png} (100%) rename test/image/baselines/{zzz_drawminorticklabel_period_axes.png => zzz_ticklabelindex_period_axes.png} (100%) rename test/image/mocks/{zzz_date_axes-ticklabelstep-drawminorticklabel.json => zzz_date_axes-ticklabelstep-ticklabelindex.json} (94%) rename test/image/mocks/{zzz_date_axes_period2_drawminorticklabel.json => zzz_date_axes_period2_ticklabelindex.json} (94%) rename test/image/mocks/{zzz_date_axes_period_drawminorticklabel.json => zzz_date_axes_period_ticklabelindex.json} (94%) rename test/image/mocks/{zzz_drawminorticklabel_period_axes.json => zzz_ticklabelindex_period_axes.json} (95%) diff --git a/draftlogs/7036_add.md b/draftlogs/7036_add.md index 2922b85bcc4..05103c0e202 100644 --- a/draftlogs/7036_add.md +++ b/draftlogs/7036_add.md @@ -1 +1 @@ - - Add axis property `drawminorticklabel` for drawing the label for each minor tick n positions away from a major tick [[#7036](https://github.com/plotly/plotly.js/pull/7036)] \ No newline at end of file + - Add axis property `ticklabelindex` for drawing the label for each minor tick n positions away from a major tick [[#7036](https://github.com/plotly/plotly.js/pull/7036)] \ No newline at end of file diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 2caf9060df8..86d28b49879 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -909,7 +909,7 @@ axes.calcTicks = function calcTicks(ax, opts) { var calendar = ax.calendar; var ticklabelstep = ax.ticklabelstep; var isPeriod = ax.ticklabelmode === 'period'; - var drawMinorTickLabel = ax.drawminorticklabel; + var ticklabelIndex = ax.ticklabelindex; var rng = Lib.simpleMap(ax.range, ax.r2l, undefined, undefined, opts); var axrev = (rng[1] < rng[0]); var minRange = Math.min(rng[0], rng[1]); @@ -923,7 +923,7 @@ axes.calcTicks = function calcTicks(ax, opts) { var tickVals = []; var minorTickVals = []; // all ticks for which labels are drawn which is not necessarily the major ticks when - // `drawminorticklabel` is set. + // `ticklabelindex` is set. var labelTickVals = []; var hasMinor = ax.minor && (ax.minor.ticks || ax.minor.showgrid); @@ -1079,20 +1079,20 @@ axes.calcTicks = function calcTicks(ax, opts) { } } - // check if drawMinorTickLabel makes sense, otherwise ignore it + // check if ticklabelIndex makes sense, otherwise ignore it if(!minorTickVals || minorTickVals.length < 2) { - drawMinorTickLabel = false; + ticklabelIndex = false; } else { var diff = minorTickVals[1].value - minorTickVals[0].value; if(!periodCompatibleWithTickformat(diff, ax.tickformat)) { - drawMinorTickLabel = false; + ticklabelIndex = false; } } // Determine for which ticks to draw labels - if(!drawMinorTickLabel) { + if (!ticklabelIndex) { labelTickVals = tickVals; } else { - // Collect and sort all major and minor ticks, to find the minor ticks `drawMinorTickLabel` + // Collect and sort all major and minor ticks, to find the minor ticks `ticklabelIndex` // steps away from each major tick. For those minor ticks we want to draw the label. var allTickVals = tickVals.concat(minorTickVals); @@ -1115,7 +1115,7 @@ axes.calcTicks = function calcTicks(ax, opts) { .filter(function(index) { return index !== null; }); majorTickIndices.forEach(function(majorIdx) { - var minorIdx = majorIdx + drawMinorTickLabel; + var minorIdx = majorIdx + ticklabelIndex; if(minorIdx >= 0 && minorIdx < allTickVals.length) { labelTickVals.push(allTickVals[minorIdx]); } @@ -1239,7 +1239,7 @@ axes.calcTicks = function calcTicks(ax, opts) { var _value = tickVals[i].value; if(_minor) { - if(drawMinorTickLabel && labelTickVals.indexOf(tickVals[i]) !== -1) { + if (ticklabelIndex && labelTickVals.indexOf(tickVals[i]) !== -1) { t = setTickLabel(ax, tickVals[i]); } else { t = { x: _value }; @@ -1250,7 +1250,7 @@ axes.calcTicks = function calcTicks(ax, opts) { lastVisibleHead = ax._prevDateHead; t = setTickLabel(ax, tickVals[i]); if(tickVals[i].skipLabel || - drawMinorTickLabel && labelTickVals.indexOf(tickVals[i]) === -1) { + ticklabelIndex && labelTickVals.indexOf(tickVals[i]) === -1) { hideLabel(t); } diff --git a/src/plots/cartesian/axis_defaults.js b/src/plots/cartesian/axis_defaults.js index 438b2986bee..de59f1853bd 100644 --- a/src/plots/cartesian/axis_defaults.js +++ b/src/plots/cartesian/axis_defaults.js @@ -59,8 +59,8 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce, } } - if(!options.noDrawminorticklabel && axType === 'date' && containerOut.ticklabelmode === 'period') { - coerce('drawminorticklabel'); + if(!options.noTicklabelindex && axType === 'date' && containerOut.ticklabelmode === 'period') { + coerce('ticklabelindex'); } var ticklabelposition = ''; diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index 417652a3fc5..a3d310ea7c3 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -721,7 +721,7 @@ module.exports = { 'outside and vice versa.' ].join(' ') }, - drawminorticklabel: { + ticklabelindex: { // In the future maybe add `arrayOk: true` for labeling several minor ticks, e.g. [-1, 0, 1] valType: 'integer', editType: 'calc', @@ -729,7 +729,7 @@ module.exports = { 'Only for date axes with `ticklabelmode` *period*.', 'Instead of drawing the major tick label, draw the label for the minor tick', 'that is n positions away from the major tick. E.g. to always draw the label for the', - 'minor tick before each major tick, choose `drawminorticklabel` -1' + 'minor tick before each major tick, choose `ticklabelindex` -1' ].join(' ') }, mirror: { diff --git a/src/plots/gl3d/layout/axis_defaults.js b/src/plots/gl3d/layout/axis_defaults.js index 3b93314078b..e3d71be24cb 100644 --- a/src/plots/gl3d/layout/axis_defaults.js +++ b/src/plots/gl3d/layout/axis_defaults.js @@ -42,7 +42,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, options) { data: options.data, showGrid: true, noAutotickangles: true, - noDrawminorticklabel: true, + noTicklabelindex: true, noTickson: true, noTicklabelmode: true, noTicklabelshift: true, diff --git a/test/image/baselines/zzz_date_axes-ticklabelstep-drawminorticklabel.png b/test/image/baselines/zzz_date_axes-ticklabelstep-ticklabelindex.png similarity index 100% rename from test/image/baselines/zzz_date_axes-ticklabelstep-drawminorticklabel.png rename to test/image/baselines/zzz_date_axes-ticklabelstep-ticklabelindex.png diff --git a/test/image/baselines/zzz_date_axes_period2_drawminorticklabel.png b/test/image/baselines/zzz_date_axes_period2_ticklabelindex.png similarity index 100% rename from test/image/baselines/zzz_date_axes_period2_drawminorticklabel.png rename to test/image/baselines/zzz_date_axes_period2_ticklabelindex.png diff --git a/test/image/baselines/zzz_date_axes_period_drawminorticklabel.png b/test/image/baselines/zzz_date_axes_period_ticklabelindex.png similarity index 100% rename from test/image/baselines/zzz_date_axes_period_drawminorticklabel.png rename to test/image/baselines/zzz_date_axes_period_ticklabelindex.png diff --git a/test/image/baselines/zzz_drawminorticklabel_period_axes.png b/test/image/baselines/zzz_ticklabelindex_period_axes.png similarity index 100% rename from test/image/baselines/zzz_drawminorticklabel_period_axes.png rename to test/image/baselines/zzz_ticklabelindex_period_axes.png diff --git a/test/image/mocks/zzz_date_axes-ticklabelstep-drawminorticklabel.json b/test/image/mocks/zzz_date_axes-ticklabelstep-ticklabelindex.json similarity index 94% rename from test/image/mocks/zzz_date_axes-ticklabelstep-drawminorticklabel.json rename to test/image/mocks/zzz_date_axes-ticklabelstep-ticklabelindex.json index 6375312356a..0c9d9726ef8 100644 --- a/test/image/mocks/zzz_date_axes-ticklabelstep-drawminorticklabel.json +++ b/test/image/mocks/zzz_date_axes-ticklabelstep-ticklabelindex.json @@ -158,7 +158,7 @@ }, "tickcolor": "red", "ticklabelmode": "period", - "drawminorticklabel": 4, + "ticklabelindex": 4, "anchor": "y" }, "xaxis2": { @@ -170,7 +170,7 @@ "tickcolor": "red", "ticklabelmode": "period", "anchor": "y2", - "drawminorticklabel": 1 + "ticklabelindex": 1 }, "xaxis3": { "ticklabelstep": 2, @@ -181,7 +181,7 @@ "tickcolor": "red", "ticklabelmode": "period", "anchor": "y3", - "drawminorticklabel": 1 + "ticklabelindex": 1 }, "xaxis4": { "ticklabelstep": 2, @@ -192,7 +192,7 @@ "tickcolor": "red", "ticklabelmode": "period", "anchor": "y4", - "drawminorticklabel": 1 + "ticklabelindex": 1 }, "xaxis5": { "ticklabelstep": 2, @@ -203,7 +203,7 @@ "tickcolor": "red", "ticklabelmode": "period", "anchor": "y5", - "drawminorticklabel": -2 + "ticklabelindex": -2 }, "xaxis6": { "ticklabelstep": 2, @@ -214,7 +214,7 @@ "tickcolor": "red", "ticklabelmode": "period", "anchor": "y6", - "drawminorticklabel": 2 + "ticklabelindex": 2 }, "xaxis7": { "ticklabelstep": 2, @@ -225,7 +225,7 @@ "tickcolor": "red", "ticklabelmode": "period", "anchor": "y7", - "drawminorticklabel": -3 + "ticklabelindex": -3 } } } diff --git a/test/image/mocks/zzz_date_axes_period2_drawminorticklabel.json b/test/image/mocks/zzz_date_axes_period2_ticklabelindex.json similarity index 94% rename from test/image/mocks/zzz_date_axes_period2_drawminorticklabel.json rename to test/image/mocks/zzz_date_axes_period2_ticklabelindex.json index e4c7efcc583..8f30096f44a 100644 --- a/test/image/mocks/zzz_date_axes_period2_drawminorticklabel.json +++ b/test/image/mocks/zzz_date_axes_period2_ticklabelindex.json @@ -139,7 +139,7 @@ ], "ticklabelmode": "period", "tickformat": "%b %d, %Y", - "drawminorticklabel": 1, + "ticklabelindex": 1, "tickangle": 30 }, "xaxis2": { @@ -152,7 +152,7 @@ ], "ticklabelmode": "period", "anchor": "y2", - "drawminorticklabel": -1, + "ticklabelindex": -1, "tickangle": 20 }, "xaxis3": { @@ -165,7 +165,7 @@ ], "ticklabelmode": "period", "anchor": "y3", - "drawminorticklabel": 2, + "ticklabelindex": 2, "tickangle": 20 }, "xaxis4": { @@ -178,7 +178,7 @@ ], "ticklabelmode": "period", "anchor": "y4", - "drawminorticklabel": 1, + "ticklabelindex": 1, "tickangle": 20 }, "xaxis5": { @@ -191,7 +191,7 @@ ], "ticklabelmode": "period", "anchor": "y5", - "drawminorticklabel": -1, + "ticklabelindex": -1, "tickangle": 20 }, "xaxis6": { @@ -204,7 +204,7 @@ ], "ticklabelmode": "period", "anchor": "y6", - "drawminorticklabel": 2, + "ticklabelindex": 2, "tickangle": 20 }, "xaxis7": { @@ -217,7 +217,7 @@ ], "ticklabelmode": "period", "anchor": "y7", - "drawminorticklabel": -2, + "ticklabelindex": -2, "tickangle": 20 } } diff --git a/test/image/mocks/zzz_date_axes_period_drawminorticklabel.json b/test/image/mocks/zzz_date_axes_period_ticklabelindex.json similarity index 94% rename from test/image/mocks/zzz_date_axes_period_drawminorticklabel.json rename to test/image/mocks/zzz_date_axes_period_ticklabelindex.json index 935097cfb70..16cc3ba2262 100644 --- a/test/image/mocks/zzz_date_axes_period_drawminorticklabel.json +++ b/test/image/mocks/zzz_date_axes_period_ticklabelindex.json @@ -152,7 +152,7 @@ "ticks": "outside", "ticklabelmode": "period", "tickcolor": "red", - "drawminorticklabel": 4 + "ticklabelindex": 4 }, "xaxis2": { "anchor": "y2", @@ -163,7 +163,7 @@ "ticks": "outside", "ticklabelmode": "period", "tickcolor": "red", - "drawminorticklabel": -1 + "ticklabelindex": -1 }, "xaxis3": { "anchor": "y3", @@ -174,7 +174,7 @@ "ticks": "outside", "ticklabelmode": "period", "tickcolor": "red", - "drawminorticklabel": -1 + "ticklabelindex": -1 }, "xaxis4": { "anchor": "y4", @@ -185,7 +185,7 @@ "ticks": "outside", "ticklabelmode": "period", "tickcolor": "red", - "drawminorticklabel": 2 + "ticklabelindex": 2 }, "xaxis5": { "anchor": "y5", @@ -196,7 +196,7 @@ "ticks": "outside", "ticklabelmode": "period", "tickcolor": "red", - "drawminorticklabel": 1 + "ticklabelindex": 1 }, "xaxis6": { "anchor": "y6", @@ -207,7 +207,7 @@ "ticks": "outside", "ticklabelmode": "period", "tickcolor": "red", - "drawminorticklabel": -3 + "ticklabelindex": -3 }, "xaxis7": { "anchor": "y7", @@ -218,7 +218,7 @@ "ticks": "outside", "ticklabelmode": "period", "tickcolor": "red", - "drawminorticklabel": 5 + "ticklabelindex": 5 } } } diff --git a/test/image/mocks/zzz_drawminorticklabel_period_axes.json b/test/image/mocks/zzz_ticklabelindex_period_axes.json similarity index 95% rename from test/image/mocks/zzz_drawminorticklabel_period_axes.json rename to test/image/mocks/zzz_ticklabelindex_period_axes.json index 8b52f1da234..564f2e35d25 100644 --- a/test/image/mocks/zzz_drawminorticklabel_period_axes.json +++ b/test/image/mocks/zzz_ticklabelindex_period_axes.json @@ -147,7 +147,7 @@ "bargap": 0.1, "xaxis": { "title": { - "text": "xaxis: `drawminorticklabel` is ignored because tickformat is incompatible with minor ticks" + "text": "xaxis: `ticklabelindex` is ignored because tickformat is incompatible with minor ticks" }, "dtick": "M12", "minor": { @@ -158,7 +158,7 @@ }, "tickformat": "%Y", "ticklabelmode": "period", - "drawminorticklabel": -1, + "ticklabelindex": -1, "ticklen": 18, "type": "date" }, @@ -174,7 +174,7 @@ "ticks": "outside" }, "tickformat": "%b %Y", - "drawminorticklabel": -1, + "ticklabelindex": -1, "tickangle": 90, "ticklabelmode": "period", "ticklen": 18, diff --git a/test/plot-schema.json b/test/plot-schema.json index 387d393cb87..d94f1233415 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -14097,11 +14097,6 @@ ], "valType": "info_array" }, - "drawminorticklabel": { - "description": "Only for date axes with `ticklabelmode` *period*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `drawminorticklabel` -1", - "editType": "calc", - "valType": "integer" - }, "dtick": { "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", "editType": "ticks", @@ -15121,6 +15116,11 @@ }, "role": "object" }, + "ticklabelindex": { + "description": "Only for date axes with `ticklabelmode` *period*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1", + "editType": "calc", + "valType": "integer" + }, "ticklabelmode": { "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.", "dflt": "instant", @@ -15740,11 +15740,6 @@ ], "valType": "info_array" }, - "drawminorticklabel": { - "description": "Only for date axes with `ticklabelmode` *period*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `drawminorticklabel` -1", - "editType": "calc", - "valType": "integer" - }, "dtick": { "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*", "editType": "ticks", @@ -16447,6 +16442,11 @@ }, "role": "object" }, + "ticklabelindex": { + "description": "Only for date axes with `ticklabelmode` *period*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1", + "editType": "calc", + "valType": "integer" + }, "ticklabelmode": { "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.", "dflt": "instant", From e328c9fe557b939cd525a7407136f24710df3a8d Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Mon, 8 Jul 2024 12:11:04 +0200 Subject: [PATCH 19/34] Allow `ticklabelindex` also for non-period date axes and linear axes. - Also adjust baseline tests to add tests for these. --- src/plots/cartesian/axis_defaults.js | 2 +- ...ate_axes-ticklabelstep-ticklabelindex.json | 9 +- .../mocks/zzz_date_axes_ticklabelindex.json | 216 ++++++++++++++++++ ...riod_axes.json => zzz_ticklabelindex.json} | 9 + 4 files changed, 227 insertions(+), 9 deletions(-) create mode 100644 test/image/mocks/zzz_date_axes_ticklabelindex.json rename test/image/mocks/{zzz_ticklabelindex_period_axes.json => zzz_ticklabelindex.json} (96%) diff --git a/src/plots/cartesian/axis_defaults.js b/src/plots/cartesian/axis_defaults.js index de59f1853bd..8c5c75d8832 100644 --- a/src/plots/cartesian/axis_defaults.js +++ b/src/plots/cartesian/axis_defaults.js @@ -59,7 +59,7 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce, } } - if(!options.noTicklabelindex && axType === 'date' && containerOut.ticklabelmode === 'period') { + if(!options.noTicklabelindex && (axType === 'date' || axType === 'linear')) { coerce('ticklabelindex'); } diff --git a/test/image/mocks/zzz_date_axes-ticklabelstep-ticklabelindex.json b/test/image/mocks/zzz_date_axes-ticklabelstep-ticklabelindex.json index 0c9d9726ef8..b4c6ee6f9b7 100644 --- a/test/image/mocks/zzz_date_axes-ticklabelstep-ticklabelindex.json +++ b/test/image/mocks/zzz_date_axes-ticklabelstep-ticklabelindex.json @@ -157,7 +157,6 @@ "tickcolor": "black" }, "tickcolor": "red", - "ticklabelmode": "period", "ticklabelindex": 4, "anchor": "y" }, @@ -168,7 +167,6 @@ "tickcolor": "black" }, "tickcolor": "red", - "ticklabelmode": "period", "anchor": "y2", "ticklabelindex": 1 }, @@ -179,7 +177,6 @@ "tickcolor": "black" }, "tickcolor": "red", - "ticklabelmode": "period", "anchor": "y3", "ticklabelindex": 1 }, @@ -190,9 +187,8 @@ "tickcolor": "black" }, "tickcolor": "red", - "ticklabelmode": "period", "anchor": "y4", - "ticklabelindex": 1 + "ticklabelindex": 3 }, "xaxis5": { "ticklabelstep": 2, @@ -201,7 +197,6 @@ "tickcolor": "black" }, "tickcolor": "red", - "ticklabelmode": "period", "anchor": "y5", "ticklabelindex": -2 }, @@ -212,7 +207,6 @@ "tickcolor": "black" }, "tickcolor": "red", - "ticklabelmode": "period", "anchor": "y6", "ticklabelindex": 2 }, @@ -223,7 +217,6 @@ "tickcolor": "black" }, "tickcolor": "red", - "ticklabelmode": "period", "anchor": "y7", "ticklabelindex": -3 } diff --git a/test/image/mocks/zzz_date_axes_ticklabelindex.json b/test/image/mocks/zzz_date_axes_ticklabelindex.json new file mode 100644 index 00000000000..de594b1a30c --- /dev/null +++ b/test/image/mocks/zzz_date_axes_ticklabelindex.json @@ -0,0 +1,216 @@ +{ + "data": [ + { + "x": [ + "1900-01-01", + "2000-01-01", + "2100-01-01" + ], + "y": [ + 1, + 3, + 2 + ] + }, + { + "x": [ + "2013-05-01", + "2013-09-01", + "2014-01-01" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x2", + "yaxis": "y2" + }, + { + "x": [ + "2013-11-17", + "2013-12-15", + "2014-01-12" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x3", + "yaxis": "y3" + }, + { + "x": [ + "2013-01-01", + "2013-01-02", + "2013-01-03" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x4", + "yaxis": "y4" + }, + { + "x": [ + "2013-07-01 18:00", + "2013-07-02 00:00", + "2013-07-02 06:00" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x5", + "yaxis": "y5" + }, + { + "x": [ + "2013-01-01 23:59", + "2013-01-02 00:00", + "2013-01-02 00:01" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x6", + "yaxis": "y6" + }, + { + "x": [ + "2013-07-01 23:59:59", + "2013-07-02 00:00:00", + "2013-07-02 00:00:01" + ], + "y": [ + 1, + 3, + 2 + ], + "xaxis": "x7", + "yaxis": "y7" + } + ], + "layout": { + "showlegend": false, + "width": 600, + "height": 500, + "yaxis": { + "domain": [ + 0, + 0.04 + ] + }, + "yaxis2": { + "domain": [ + 0.16, + 0.2 + ] + }, + "yaxis3": { + "domain": [ + 0.32, + 0.36 + ] + }, + "yaxis4": { + "domain": [ + 0.48, + 0.52 + ] + }, + "yaxis5": { + "domain": [ + 0.64, + 0.68 + ] + }, + "yaxis6": { + "domain": [ + 0.80, + 0.84 + ] + }, + "yaxis7": { + "domain": [ + 0.96, + 1 + ] + }, + "xaxis": { + "ticks": "outside", + "tickcolor": "red", + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "ticklabelindex": 2 + }, + "xaxis2": { + "anchor": "y2", + "ticks": "outside", + "tickcolor": "red", + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "ticklabelindex": 1 + }, + "xaxis3": { + "anchor": "y3", + "ticks": "outside", + "tickcolor": "red", + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "ticklabelindex": -1 + }, + "xaxis4": { + "anchor": "y4", + "ticks": "outside", + "tickcolor": "red", + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "ticklabelindex": 3 + }, + "xaxis5": { + "anchor": "y5", + "ticks": "outside", + "tickcolor": "red", + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "ticklabelindex": 2 + }, + "xaxis6": { + "anchor": "y6", + "ticks": "outside", + "tickcolor": "red", + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "ticklabelindex": -2 + }, + "xaxis7": { + "anchor": "y7", + "ticks": "outside", + "tickcolor": "red", + "minor": { + "ticks": "outside", + "tickcolor": "black" + }, + "ticklabelindex": 4 + } + } +} \ No newline at end of file diff --git a/test/image/mocks/zzz_ticklabelindex_period_axes.json b/test/image/mocks/zzz_ticklabelindex.json similarity index 96% rename from test/image/mocks/zzz_ticklabelindex_period_axes.json rename to test/image/mocks/zzz_ticklabelindex.json index 564f2e35d25..2b083edc8c0 100644 --- a/test/image/mocks/zzz_ticklabelindex_period_axes.json +++ b/test/image/mocks/zzz_ticklabelindex.json @@ -182,6 +182,15 @@ "side": "top", "overlaying": "x", "type": "date" + }, + "yaxis": { + "ticks": "outside", + "ticklabelindex": 5, + "ticklen": 10, + "minor": { + "dtick": 1, + "ticks": "outside" + } } } } From a580821dd32faf7a3a19cc54ccdcb88eeb95b5db Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Mon, 8 Jul 2024 13:14:18 +0200 Subject: [PATCH 20/34] Update `ticklabelindex` description after allowing linear and date axes. --- src/plots/cartesian/layout_attributes.js | 2 +- test/plot-schema.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index a3d310ea7c3..8ef5ee67355 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -726,7 +726,7 @@ module.exports = { valType: 'integer', editType: 'calc', description: [ - 'Only for date axes with `ticklabelmode` *period*.', + 'Only for axes with `type` *date* or *linear*.', 'Instead of drawing the major tick label, draw the label for the minor tick', 'that is n positions away from the major tick. E.g. to always draw the label for the', 'minor tick before each major tick, choose `ticklabelindex` -1' diff --git a/test/plot-schema.json b/test/plot-schema.json index d94f1233415..d5c083f0591 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -15117,7 +15117,7 @@ "role": "object" }, "ticklabelindex": { - "description": "Only for date axes with `ticklabelmode` *period*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1", + "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1", "editType": "calc", "valType": "integer" }, @@ -16443,7 +16443,7 @@ "role": "object" }, "ticklabelindex": { - "description": "Only for date axes with `ticklabelmode` *period*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1", + "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1", "editType": "calc", "valType": "integer" }, From 16d792ced5f3ba9ca480d6a000c6764b49412672 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Mon, 8 Jul 2024 13:17:58 +0200 Subject: [PATCH 21/34] Add constant ONEMILLI for enhanced clarity of function `periodCompatibleWithTickformat` --- src/constants/numerical.js | 1 + src/plots/cartesian/axes.js | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/constants/numerical.js b/src/constants/numerical.js index aeaa09e5efa..1edd86e97e4 100644 --- a/src/constants/numerical.js +++ b/src/constants/numerical.js @@ -37,6 +37,7 @@ module.exports = { ONEHOUR: 3600000, ONEMIN: 60000, ONESEC: 1000, + ONEMILLI: 1, ONEMICROSEC: 0.001, /* * For fast conversion btwn world calendars and epoch ms, the Julian Day Number diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 86d28b49879..8e5d74ded0a 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -31,6 +31,7 @@ var HALFDAY = ONEDAY / 2; var ONEHOUR = constants.ONEHOUR; var ONEMIN = constants.ONEMIN; var ONESEC = constants.ONESEC; +var ONEMILLI = constants.ONEMILLI; var ONEMICROSEC = constants.ONEMICROSEC; var MINUS_SIGN = constants.MINUS_SIGN; var BADNUM = constants.BADNUM; @@ -4607,7 +4608,7 @@ function setShiftVal(ax, axShifts) { function periodCompatibleWithTickformat(period, tickformat) { return ( /%f/.test(tickformat) ? period >= ONEMICROSEC : - /%L/.test(tickformat) ? period >= 1 : + /%L/.test(tickformat) ? period >= ONEMILLI : /%[SX]/.test(tickformat) ? period >= ONESEC : /%M/.test(tickformat) ? period >= ONEMIN : /%[HI]/.test(tickformat) ? period >= ONEHOUR : From 82f1fa07daac3fb29a769eef17662fedb8e5edc9 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Mon, 8 Jul 2024 13:32:44 +0200 Subject: [PATCH 22/34] Fix missing EOF newline in zzz_date_axes_ticklabelindex.json --- test/image/mocks/zzz_date_axes_ticklabelindex.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/image/mocks/zzz_date_axes_ticklabelindex.json b/test/image/mocks/zzz_date_axes_ticklabelindex.json index de594b1a30c..7aa5b0b7ec8 100644 --- a/test/image/mocks/zzz_date_axes_ticklabelindex.json +++ b/test/image/mocks/zzz_date_axes_ticklabelindex.json @@ -213,4 +213,4 @@ "ticklabelindex": 4 } } -} \ No newline at end of file +} From 908deecf4d47858812eba7c9e2d418c699a27720 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Mon, 8 Jul 2024 13:33:30 +0200 Subject: [PATCH 23/34] New and updated baseline images for ticklabelindex mocks --- ...date_axes-ticklabelstep-ticklabelindex.png | Bin 40959 -> 40948 bytes .../zzz_date_axes_ticklabelindex.png | Bin 0 -> 45787 bytes test/image/baselines/zzz_ticklabelindex.png | Bin 0 -> 34104 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/image/baselines/zzz_date_axes_ticklabelindex.png create mode 100644 test/image/baselines/zzz_ticklabelindex.png diff --git a/test/image/baselines/zzz_date_axes-ticklabelstep-ticklabelindex.png b/test/image/baselines/zzz_date_axes-ticklabelstep-ticklabelindex.png index fd46373f3b0dda3c729b1440c21f719fa9518963..42e95c0a2b3d4967ba1167dd1fe6ca2a36881868 100644 GIT binary patch literal 40948 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

0nr?R_kzdx;P#Wy<9mbAD<@Wt;E3`#JoYYLr-x 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∈{Q>jh&H*;L;xBfi+m?gBMc`~X_;qOA&$3x*Yi3x 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 Y-`KLbD*IB00Rs?ty85}Sb4q9e0L7$K8~^|S diff --git a/test/image/baselines/zzz_date_axes_ticklabelindex.png b/test/image/baselines/zzz_date_axes_ticklabelindex.png new file mode 100644 index 0000000000000000000000000000000000000000..5aff9c14a018dd3acd3eedad445d59146cac219d GIT binary patch literal 45787 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 z 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­FEVi9#7j!55%k(Uyez3 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 RG!Vf*J?*1fr5fi#{}&!vJYfI; literal 0 HcmV?d00001 From 884d97518a0be9c9f1c9fc15aae9e9e41be955b2 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Mon, 8 Jul 2024 13:45:15 +0200 Subject: [PATCH 24/34] Satisfy eslint rules --- src/plots/cartesian/axes.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 8e5d74ded0a..8724010b0e7 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -1090,7 +1090,7 @@ axes.calcTicks = function calcTicks(ax, opts) { } } // Determine for which ticks to draw labels - if (!ticklabelIndex) { + if(!ticklabelIndex) { labelTickVals = tickVals; } else { // Collect and sort all major and minor ticks, to find the minor ticks `ticklabelIndex` @@ -1240,7 +1240,7 @@ axes.calcTicks = function calcTicks(ax, opts) { var _value = tickVals[i].value; if(_minor) { - if (ticklabelIndex && labelTickVals.indexOf(tickVals[i]) !== -1) { + if(ticklabelIndex && labelTickVals.indexOf(tickVals[i]) !== -1) { t = setTickLabel(ax, tickVals[i]); } else { t = { x: _value }; From 6fd6bd4b016f7f747119cae4027587325bd4f57f Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Tue, 9 Jul 2024 13:31:19 +0200 Subject: [PATCH 25/34] Fix ticklabelindex for reversed axes Check for period compatibility did not take reversed axis into account. Also added reversed axis to mock. --- src/plots/cartesian/axes.js | 4 +++- test/image/mocks/zzz_ticklabelindex.json | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 8724010b0e7..4c91d314cf0 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -910,6 +910,7 @@ axes.calcTicks = function calcTicks(ax, opts) { var calendar = ax.calendar; var ticklabelstep = ax.ticklabelstep; var isPeriod = ax.ticklabelmode === 'period'; + var isReversed = ax.range[0] > ax.range[1]; var ticklabelIndex = ax.ticklabelindex; var rng = Lib.simpleMap(ax.range, ax.r2l, undefined, undefined, opts); var axrev = (rng[1] < rng[0]); @@ -1084,7 +1085,7 @@ axes.calcTicks = function calcTicks(ax, opts) { if(!minorTickVals || minorTickVals.length < 2) { ticklabelIndex = false; } else { - var diff = minorTickVals[1].value - minorTickVals[0].value; + var diff = (minorTickVals[1].value - minorTickVals[0].value) * (isReversed ? -1 : 1); if(!periodCompatibleWithTickformat(diff, ax.tickformat)) { ticklabelIndex = false; } @@ -1101,6 +1102,7 @@ axes.calcTicks = function calcTicks(ax, opts) { // first major tick was just added for period handling allTickVals = allTickVals.slice(1); } + allTickVals = allTickVals .sort(function(a, b) { return a.value - b.value; }) diff --git a/test/image/mocks/zzz_ticklabelindex.json b/test/image/mocks/zzz_ticklabelindex.json index 2b083edc8c0..0ffcec4826e 100644 --- a/test/image/mocks/zzz_ticklabelindex.json +++ b/test/image/mocks/zzz_ticklabelindex.json @@ -174,6 +174,7 @@ "ticks": "outside" }, "tickformat": "%b %Y", + "autorange": "reversed", "ticklabelindex": -1, "tickangle": 90, "ticklabelmode": "period", From 05d456d1c64204cc210ba94fb9135bc78964f371 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Tue, 9 Jul 2024 14:04:51 +0200 Subject: [PATCH 26/34] Add `arrayOk` for `ticklabelindex`, add test case to mock --- src/plots/cartesian/axes.js | 17 ++++++++++++----- src/plots/cartesian/layout_attributes.js | 2 +- test/image/mocks/zzz_ticklabelindex.json | 4 ++-- test/plot-schema.json | 12 ++++++++++++ 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 4c91d314cf0..970e33782b2 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -911,7 +911,8 @@ axes.calcTicks = function calcTicks(ax, opts) { var ticklabelstep = ax.ticklabelstep; var isPeriod = ax.ticklabelmode === 'period'; var isReversed = ax.range[0] > ax.range[1]; - var ticklabelIndex = ax.ticklabelindex; + var ticklabelIndex = (Array.isArray(ax.ticklabelindex) || !ax.ticklabelindex) ? + ax.ticklabelindex : [ax.ticklabelindex]; var rng = Lib.simpleMap(ax.range, ax.r2l, undefined, undefined, opts); var axrev = (rng[1] < rng[0]); var minRange = Math.min(rng[0], rng[1]); @@ -1117,11 +1118,17 @@ axes.calcTicks = function calcTicks(ax, opts) { }) .filter(function(index) { return index !== null; }); + var uniqueIndices = []; // ensure that each label is only drawn once majorTickIndices.forEach(function(majorIdx) { - var minorIdx = majorIdx + ticklabelIndex; - if(minorIdx >= 0 && minorIdx < allTickVals.length) { - labelTickVals.push(allTickVals[minorIdx]); - } + ticklabelIndex.map(function(nextLabelIdx) { + var minorIdx = majorIdx + nextLabelIdx; + if(uniqueIndices.indexOf(minorIdx) === -1) { + uniqueIndices.push(minorIdx); + if(minorIdx >= 0 && minorIdx < allTickVals.length) { + labelTickVals.push(allTickVals[minorIdx]); + } + } + }); }); } diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index 8ef5ee67355..044b643e497 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -722,8 +722,8 @@ module.exports = { ].join(' ') }, ticklabelindex: { - // In the future maybe add `arrayOk: true` for labeling several minor ticks, e.g. [-1, 0, 1] valType: 'integer', + arrayOk: true, editType: 'calc', description: [ 'Only for axes with `type` *date* or *linear*.', diff --git a/test/image/mocks/zzz_ticklabelindex.json b/test/image/mocks/zzz_ticklabelindex.json index 0ffcec4826e..3e90aaf050e 100644 --- a/test/image/mocks/zzz_ticklabelindex.json +++ b/test/image/mocks/zzz_ticklabelindex.json @@ -164,7 +164,7 @@ }, "xaxis2": { "title": { - "text": "xaxis2: Period before each major tick is labeled" + "text": "xaxis2: Period before, after each major tick and in the center between major ticks are labeled" }, "dtick": "M12", "minor": { @@ -175,7 +175,7 @@ }, "tickformat": "%b %Y", "autorange": "reversed", - "ticklabelindex": -1, + "ticklabelindex": [-1, 0, 6], "tickangle": 90, "ticklabelmode": "period", "ticklen": 18, diff --git a/test/plot-schema.json b/test/plot-schema.json index d5c083f0591..ad033e2bc19 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -15117,10 +15117,16 @@ "role": "object" }, "ticklabelindex": { + "arrayOk": true, "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1", "editType": "calc", "valType": "integer" }, + "ticklabelindexsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticklabelindex`.", + "editType": "none", + "valType": "string" + }, "ticklabelmode": { "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.", "dflt": "instant", @@ -16443,10 +16449,16 @@ "role": "object" }, "ticklabelindex": { + "arrayOk": true, "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1", "editType": "calc", "valType": "integer" }, + "ticklabelindexsrc": { + "description": "Sets the source reference on Chart Studio Cloud for `ticklabelindex`.", + "editType": "none", + "valType": "string" + }, "ticklabelmode": { "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.", "dflt": "instant", From d3514626456de466abf807e2ab052dd8d71df565 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Tue, 9 Jul 2024 14:38:19 +0200 Subject: [PATCH 27/34] Update baseline image for zzz_ticklabelindex after adding more test cases. --- test/image/baselines/zzz_ticklabelindex.png | Bin 34104 -> 37568 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/zzz_ticklabelindex.png b/test/image/baselines/zzz_ticklabelindex.png index 79340be6a165c24f5694bcc7e3afd8aaf178432f..6ba30bf59e373a0ec01cd8e761b7696b63285e9e 100644 GIT binary patch literal 37568 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­FEVi9#7j!55%k(Uyez3 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 RG!Vf*J?*1fr5fi#{}&!vJYfI; From 96a26da68ce4bc7f532e24a9bde49ba02ff02ae7 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Tue, 9 Jul 2024 17:01:10 +0200 Subject: [PATCH 28/34] replace Array.isArray with Lib.isArrayOrTypedArray --- src/plots/cartesian/axes.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index 970e33782b2..f53034bdc4e 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -911,7 +911,7 @@ axes.calcTicks = function calcTicks(ax, opts) { var ticklabelstep = ax.ticklabelstep; var isPeriod = ax.ticklabelmode === 'period'; var isReversed = ax.range[0] > ax.range[1]; - var ticklabelIndex = (Array.isArray(ax.ticklabelindex) || !ax.ticklabelindex) ? + var ticklabelIndex = (Lib.isArrayOrTypedArray(ax.ticklabelindex) || !ax.ticklabelindex) ? ax.ticklabelindex : [ax.ticklabelindex]; var rng = Lib.simpleMap(ax.range, ax.r2l, undefined, undefined, opts); var axrev = (rng[1] < rng[0]); From 64e14d63402aa78dbc94483c1e78b5f5260cdd17 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Wed, 10 Jul 2024 15:22:07 +0200 Subject: [PATCH 29/34] Add to ticklabelindex description how it can be useful for period axes --- src/plots/cartesian/layout_attributes.js | 4 +++- test/plot-schema.json | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index 044b643e497..2ed2a2db198 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -729,7 +729,9 @@ module.exports = { 'Only for axes with `type` *date* or *linear*.', 'Instead of drawing the major tick label, draw the label for the minor tick', 'that is n positions away from the major tick. E.g. to always draw the label for the', - 'minor tick before each major tick, choose `ticklabelindex` -1' + 'minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date', + 'axes with `ticklabelmode` *period* if you want to label the period that ends with each', + 'major tick instead of the period that begins there.' ].join(' ') }, mirror: { diff --git a/test/plot-schema.json b/test/plot-schema.json index ad033e2bc19..929904f8d9a 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -15118,7 +15118,7 @@ }, "ticklabelindex": { "arrayOk": true, - "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1", + "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there.", "editType": "calc", "valType": "integer" }, @@ -16450,7 +16450,7 @@ }, "ticklabelindex": { "arrayOk": true, - "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1", + "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there.", "editType": "calc", "valType": "integer" }, From 50b1e0f82eb17f7525205dcfeefb8076eed8d5da Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Wed, 10 Jul 2024 15:22:32 +0200 Subject: [PATCH 30/34] Mention contributor in draftlog --- draftlogs/7036_add.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draftlogs/7036_add.md b/draftlogs/7036_add.md index 05103c0e202..f71229e3848 100644 --- a/draftlogs/7036_add.md +++ b/draftlogs/7036_add.md @@ -1 +1 @@ - - Add axis property `ticklabelindex` for drawing the label for each minor tick n positions away from a major tick [[#7036](https://github.com/plotly/plotly.js/pull/7036)] \ No newline at end of file + - Add axis property `ticklabelindex` for drawing the label for each minor tick n positions away from a major tick, with thanks to @my-tien for the contribution! [[#7036](https://github.com/plotly/plotly.js/pull/7036)] \ No newline at end of file From 86b43e4ee3787d4484aca79833c9120f6e9153ae Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Wed, 10 Jul 2024 15:22:55 +0200 Subject: [PATCH 31/34] refactor calcTicks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - improve performance of ticklabelindex initialization - rename labelTickVals → allTicklabelVals --- src/plots/cartesian/axes.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index f53034bdc4e..bc8b2b369eb 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -911,7 +911,7 @@ axes.calcTicks = function calcTicks(ax, opts) { var ticklabelstep = ax.ticklabelstep; var isPeriod = ax.ticklabelmode === 'period'; var isReversed = ax.range[0] > ax.range[1]; - var ticklabelIndex = (Lib.isArrayOrTypedArray(ax.ticklabelindex) || !ax.ticklabelindex) ? + var ticklabelIndex = (!ax.ticklabelindex || Lib.isArrayOrTypedArray(ax.ticklabelindex)) ? ax.ticklabelindex : [ax.ticklabelindex]; var rng = Lib.simpleMap(ax.range, ax.r2l, undefined, undefined, opts); var axrev = (rng[1] < rng[0]); @@ -927,7 +927,7 @@ axes.calcTicks = function calcTicks(ax, opts) { var minorTickVals = []; // all ticks for which labels are drawn which is not necessarily the major ticks when // `ticklabelindex` is set. - var labelTickVals = []; + var allTicklabelVals = []; var hasMinor = ax.minor && (ax.minor.ticks || ax.minor.showgrid); @@ -1093,7 +1093,7 @@ axes.calcTicks = function calcTicks(ax, opts) { } // Determine for which ticks to draw labels if(!ticklabelIndex) { - labelTickVals = tickVals; + allTicklabelVals = tickVals; } else { // Collect and sort all major and minor ticks, to find the minor ticks `ticklabelIndex` // steps away from each major tick. For those minor ticks we want to draw the label. @@ -1125,7 +1125,7 @@ axes.calcTicks = function calcTicks(ax, opts) { if(uniqueIndices.indexOf(minorIdx) === -1) { uniqueIndices.push(minorIdx); if(minorIdx >= 0 && minorIdx < allTickVals.length) { - labelTickVals.push(allTickVals[minorIdx]); + allTicklabelVals.push(allTickVals[minorIdx]); } } }); @@ -1165,7 +1165,7 @@ axes.calcTicks = function calcTicks(ax, opts) { } } - if(isPeriod) positionPeriodTicks(labelTickVals, ax, ax._definedDelta); + if(isPeriod) positionPeriodTicks(allTicklabelVals, ax, ax._definedDelta); var i; if(ax.rangebreaks) { @@ -1249,7 +1249,7 @@ axes.calcTicks = function calcTicks(ax, opts) { var _value = tickVals[i].value; if(_minor) { - if(ticklabelIndex && labelTickVals.indexOf(tickVals[i]) !== -1) { + if(ticklabelIndex && allTicklabelVals.indexOf(tickVals[i]) !== -1) { t = setTickLabel(ax, tickVals[i]); } else { t = { x: _value }; @@ -1260,7 +1260,7 @@ axes.calcTicks = function calcTicks(ax, opts) { lastVisibleHead = ax._prevDateHead; t = setTickLabel(ax, tickVals[i]); if(tickVals[i].skipLabel || - ticklabelIndex && labelTickVals.indexOf(tickVals[i]) === -1) { + ticklabelIndex && allTicklabelVals.indexOf(tickVals[i]) === -1) { hideLabel(t); } From 051523756b6fe8f361cbf456be986cb9734b1615 Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Wed, 10 Jul 2024 15:31:58 +0200 Subject: [PATCH 32/34] refactor calcTicks - use pushUnique - don't shadow variable name from outer scope --- src/plots/cartesian/axes.js | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/plots/cartesian/axes.js b/src/plots/cartesian/axes.js index bc8b2b369eb..90f7b288de5 100644 --- a/src/plots/cartesian/axes.js +++ b/src/plots/cartesian/axes.js @@ -1118,15 +1118,11 @@ axes.calcTicks = function calcTicks(ax, opts) { }) .filter(function(index) { return index !== null; }); - var uniqueIndices = []; // ensure that each label is only drawn once majorTickIndices.forEach(function(majorIdx) { ticklabelIndex.map(function(nextLabelIdx) { var minorIdx = majorIdx + nextLabelIdx; - if(uniqueIndices.indexOf(minorIdx) === -1) { - uniqueIndices.push(minorIdx); - if(minorIdx >= 0 && minorIdx < allTickVals.length) { - allTicklabelVals.push(allTickVals[minorIdx]); - } + if(minorIdx >= 0 && minorIdx < allTickVals.length) { + Lib.pushUnique(allTicklabelVals, allTickVals[minorIdx]); } }); }); @@ -1224,7 +1220,7 @@ axes.calcTicks = function calcTicks(ax, opts) { tickVals = tickVals.concat(minorTickVals); function setTickLabel(ax, tickVal) { - var t = axes.tickText( + var text = axes.tickText( ax, tickVal.value, false, // hover @@ -1232,15 +1228,15 @@ axes.calcTicks = function calcTicks(ax, opts) { ); var p = tickVal.periodX; if(p !== undefined) { - t.periodX = p; + text.periodX = p; if(p > maxRange || p < minRange) { // hide label if outside the range - if(p > maxRange) t.periodX = maxRange; - if(p < minRange) t.periodX = minRange; + if(p > maxRange) text.periodX = maxRange; + if(p < minRange) text.periodX = minRange; - hideLabel(t); + hideLabel(text); } } - return t; + return text; } var t; From b6903e4f164cd869f341747426f57302ee0f784e Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Wed, 10 Jul 2024 15:34:46 +0200 Subject: [PATCH 33/34] comment about possible extra values for ticklabelindex --- src/plots/cartesian/layout_attributes.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plots/cartesian/layout_attributes.js b/src/plots/cartesian/layout_attributes.js index 2ed2a2db198..6fe04d31406 100644 --- a/src/plots/cartesian/layout_attributes.js +++ b/src/plots/cartesian/layout_attributes.js @@ -722,6 +722,8 @@ module.exports = { ].join(' ') }, ticklabelindex: { + // in the future maybe add `extras: ['all', 'minor']` to allow showing labels for all ticks + // or for all minor ticks. valType: 'integer', arrayOk: true, editType: 'calc', From f8974e037d5b493da17fece26a58977202f1b18e Mon Sep 17 00:00:00 2001 From: My-Tien Nguyen Date: Wed, 10 Jul 2024 15:36:16 +0200 Subject: [PATCH 34/34] Mention contributor in draftlog for PR 7006 --- draftlogs/7006_add.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draftlogs/7006_add.md b/draftlogs/7006_add.md index c3faa0ca5c4..98a572f10d5 100644 --- a/draftlogs/7006_add.md +++ b/draftlogs/7006_add.md @@ -1 +1 @@ - - Add property `ticklabelstandoff` and `ticklabelshift` to cartesian axes to adjust positioning of tick labels [[#7006](https://github.com/plotly/plotly.js/pull/7006)] + - Add property `ticklabelstandoff` and `ticklabelshift` to cartesian axes to adjust positioning of tick labels, with thanks to @my-tien for the contribution! [[#7006](https://github.com/plotly/plotly.js/pull/7006)]