From 29f13583288cd08bc4f36789c76143e750895245 Mon Sep 17 00:00:00 2001 From: Evert Timberg Date: Mon, 12 Oct 2020 10:22:13 -0400 Subject: [PATCH] Cartesian axis label cross alignment (#7874) * Refactor Y axis alignment to it's own method * Label Cross alignment * Add documentation of new setting * Update docs with live sample --- .../axes/cartesian/{index.md => index.mdx} | 63 ++++++++++ docs/docs/axes/styling.md | 1 - src/core/core.scale.js | 109 +++++++++++++++--- .../cross-align-bottom-center.js | 29 +++++ .../cross-align-bottom-center.png | Bin 0 -> 12544 bytes .../crossAlignment/cross-align-bottom-far.js | 29 +++++ .../crossAlignment/cross-align-bottom-far.png | Bin 0 -> 12757 bytes .../crossAlignment/cross-align-bottom-near.js | 29 +++++ .../cross-align-bottom-near.png | Bin 0 -> 12728 bytes .../crossAlignment/cross-align-left-center.js | 31 +++++ .../cross-align-left-center.png | Bin 0 -> 11945 bytes .../crossAlignment/cross-align-left-far.js | 31 +++++ .../crossAlignment/cross-align-left-far.png | Bin 0 -> 12029 bytes .../crossAlignment/cross-align-left-near.js | 31 +++++ .../crossAlignment/cross-align-left-near.png | Bin 0 -> 12007 bytes .../cross-align-right-center.js | 31 +++++ .../cross-align-right-center.png | Bin 0 -> 11111 bytes .../crossAlignment/cross-align-right-far.js | 31 +++++ .../crossAlignment/cross-align-right-far.png | Bin 0 -> 11174 bytes .../crossAlignment/cross-align-right-near.js | 31 +++++ .../crossAlignment/cross-align-right-near.png | Bin 0 -> 10867 bytes .../crossAlignment/cross-align-top-center.js | 30 +++++ .../crossAlignment/cross-align-top-center.png | Bin 0 -> 12572 bytes .../crossAlignment/cross-align-top-far.js | 30 +++++ .../crossAlignment/cross-align-top-far.png | Bin 0 -> 12016 bytes .../crossAlignment/cross-align-top-near.js | 30 +++++ .../crossAlignment/cross-align-top-near.png | Bin 0 -> 12017 bytes types/scales/index.d.ts | 8 ++ 28 files changed, 524 insertions(+), 20 deletions(-) rename docs/docs/axes/cartesian/{index.md => index.mdx} (71%) create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-bottom-center.js create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-bottom-center.png create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-bottom-far.js create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-bottom-far.png create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-bottom-near.js create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-bottom-near.png create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-left-center.js create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-left-center.png create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-left-far.js create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-left-far.png create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-left-near.js create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-left-near.png create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-right-center.js create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-right-center.png create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-right-far.js create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-right-far.png create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-right-near.js create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-right-near.png create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-top-center.js create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-top-center.png create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-top-far.js create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-top-far.png create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-top-near.js create mode 100644 test/fixtures/core.scale/crossAlignment/cross-align-top-near.png diff --git a/docs/docs/axes/cartesian/index.md b/docs/docs/axes/cartesian/index.mdx similarity index 71% rename from docs/docs/axes/cartesian/index.md rename to docs/docs/axes/cartesian/index.mdx index 2fa707cc9..2e7cf2280 100644 --- a/docs/docs/axes/cartesian/index.md +++ b/docs/docs/axes/cartesian/index.mdx @@ -2,6 +2,8 @@ title: Cartesian Axes --- +import { useEffect } from 'react'; + Axes that follow a cartesian grid are known as 'Cartesian Axes'. Cartesian axes are used for line, bar, and bubble charts. Four cartesian axes are included in Chart.js by default. * [linear](./linear.md#linear-cartesian-axis) @@ -47,6 +49,8 @@ The following options are common to all cartesian axes but do not apply to other | Name | Type | Default | Description | ---- | ---- | ------- | ----------- +| `alignment` | `string` | | `'center'` | The tick alignment along the axis. Can be `'start'`, `'center'`, or `'end'`. +| `crossAlignment` | `string` | | `'near'` | The tick alignment perpendicular to the axis. Can be `'near'`, `'center'`, or `'far'`. See [Tick Alignment](#tick-alignment) | `sampleSize` | `number` | `ticks.length` | The number of ticks to examine when deciding how many labels will fit. Setting a smaller value will be faster, but may be less accurate when there is large variability in label length. | `autoSkip` | `boolean` | `true` | If true, automatically calculates how many labels can be shown and hides labels accordingly. Labels will be rotated up to `maxRotation` before skipping any. Turn `autoSkip` off to show all labels no matter what. | `autoSkipPadding` | `number` | `0` | Padding between the ticks on the horizontal axis when `autoSkip` is enabled. @@ -56,6 +60,65 @@ The following options are common to all cartesian axes but do not apply to other | `mirror` | `boolean` | `false` | Flips tick labels around axis, displaying the labels inside the chart instead of outside. *Note: Only applicable to vertical scales.* | `padding` | `number` | `0` | Padding between the tick label and the axis. When set on a vertical axis, this applies in the horizontal (X) direction. When set on a horizontal axis, this applies in the vertical (Y) direction. +### Tick Alignment + +The alignment of ticks is primarily controlled using two settings on the tick configuration object: `alignment` and `crossAlignment`. The `alignment` setting configures how labels align with the tick mark along the axis direction (i.e. horizontal for a horizontal axis and vertical for a vertical axis). The `crossAlignment` setting configures how labels align with the tick mark in the perpendicular direction (i.e. vertical for a horizontal axis and horizontal for a vertical axis). In the example below, the `crossAlignment` setting is used to left align the labels on the Y axis. + +```jsx live +function exampleAlignment() { + useEffect(() => { + const cfg = { + type: 'bar', + data: { + labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'], + datasets: [{ + axis: 'y', + label: 'My First Dataset', + data: [65, 59, 80, 81, 56, 55, 40], + fill: false, + backgroundColor: [ + 'rgba(255, 99, 132, 0.2)', + 'rgba(255, 159, 64, 0.2)', + 'rgba(255, 205, 86, 0.2)', + 'rgba(75, 192, 192, 0.2)', + 'rgba(54, 162, 235, 0.2)', + 'rgba(153, 102, 255, 0.2)', + 'rgba(201, 203, 207, 0.2)' + ], + borderColor: [ + 'rgb(255, 99, 132)', + 'rgb(255, 159, 64)', + 'rgb(255, 205, 86)', + 'rgb(75, 192, 192)', + 'rgb(54, 162, 235)', + 'rgb(153, 102, 255)', + 'rgb(201, 203, 207)' + ], + borderWidth: 1 + }] + }, + options: { + indexAxis: 'y', + scales: { + x: { + beginAtZero: true + }, + y: { + ticks: { + crossAlignment: 'far', + } + } + } + } + }; + new Chart(document.getElementById('chartjs-1').getContext('2d'), cfg); + }); + return
; +} +``` + +**Note:** the `crossAlignment` setting is not used the the tick rotation is not `0`, the axis position is `'center'` or the position is with respect to a data value. + ### Axis ID The properties `dataset.xAxisID` or `dataset.yAxisID` have to match to `scales` property. This is especially needed if multi-axes charts are used. diff --git a/docs/docs/axes/styling.md b/docs/docs/axes/styling.md index eed36ab4d..a9c8f1a0b 100644 --- a/docs/docs/axes/styling.md +++ b/docs/docs/axes/styling.md @@ -42,7 +42,6 @@ The tick configuration is nested under the scale configuration in the `ticks` ke | Name | Type | Scriptable | Default | Description | ---- | ---- | :-------------------------------: | ------- | ----------- -| `alignment` | `string` | | `'center'` | The tick alignment along the axis. Can be `'start'`, `'center'`, or `'end'`. | `callback` | `function` | | | Returns the string representation of the tick value as it should be displayed on the chart. See [callback](../axes/labelling.md#creating-custom-tick-formats). | `display` | `boolean` | | `true` | If true, show tick labels. | `font` | `Font` | Yes | `defaults.font` | See [Fonts](../general/fonts.md) diff --git a/src/core/core.scale.js b/src/core/core.scale.js index 69a69be76..5dc8d7e2d 100644 --- a/src/core/core.scale.js +++ b/src/core/core.scale.js @@ -63,6 +63,7 @@ defaults.set('scale', { minor: {}, major: {}, alignment: 'center', + crossAlignment: 'near', } }); @@ -1250,56 +1251,59 @@ export default class Scale extends Element { const axis = me.axis; const options = me.options; const {position, ticks: optionTicks} = options; - const isMirrored = optionTicks.mirror; const isHorizontal = me.isHorizontal(); const ticks = me.ticks; - const tickPadding = optionTicks.padding; + const {alignment, crossAlignment, padding} = optionTicks; const tl = getTickMarkLength(options.gridLines); + const tickAndPadding = tl + padding; const rotation = -toRadians(me.labelRotation); const items = []; let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset; let textBaseline = 'middle'; if (position === 'top') { - y = me.bottom - tl - tickPadding; + y = me.bottom - tickAndPadding; textAlign = me._getXAxisLabelAlignment(); } else if (position === 'bottom') { - y = me.top + tl + tickPadding; + y = me.top + tickAndPadding; textAlign = me._getXAxisLabelAlignment(); } else if (position === 'left') { - x = me.right - (isMirrored ? 0 : tl) - tickPadding; - textAlign = isMirrored ? 'left' : 'right'; + const ret = this._getYAxisLabelAlignment(tl); + textAlign = ret.textAlign; + x = ret.x; } else if (position === 'right') { - x = me.left + (isMirrored ? 0 : tl) + tickPadding; - textAlign = isMirrored ? 'right' : 'left'; + const ret = this._getYAxisLabelAlignment(tl); + textAlign = ret.textAlign; + x = ret.x; } else if (axis === 'x') { if (position === 'center') { - y = ((chartArea.top + chartArea.bottom) / 2) + tl + tickPadding; + y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding; } else if (isObject(position)) { const positionAxisID = Object.keys(position)[0]; const value = position[positionAxisID]; - y = me.chart.scales[positionAxisID].getPixelForValue(value) + tl + tickPadding; + y = me.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding; } textAlign = me._getXAxisLabelAlignment(); } else if (axis === 'y') { if (position === 'center') { - x = ((chartArea.left + chartArea.right) / 2) - tl - tickPadding; + x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding; } else if (isObject(position)) { const positionAxisID = Object.keys(position)[0]; const value = position[positionAxisID]; x = me.chart.scales[positionAxisID].getPixelForValue(value); } - textAlign = 'right'; + textAlign = this._getYAxisLabelAlignment(tl).textAlign; } if (axis === 'y') { - if (optionTicks.alignment === 'start') { + if (alignment === 'start') { textBaseline = 'top'; - } else if (optionTicks.alignment === 'end') { + } else if (alignment === 'end') { textBaseline = 'bottom'; } } + const labelSizes = me._getLabelSizes(); for (i = 0, ilen = ticks.length; i < ilen; ++i) { tick = ticks[i]; label = tick.label; @@ -1308,15 +1312,30 @@ export default class Scale extends Element { font = me._resolveTickFontOptions(i); lineHeight = font.lineHeight; lineCount = isArray(label) ? label.length : 1; + const halfCount = lineCount / 2; if (isHorizontal) { x = pixel; if (position === 'top') { - textOffset = (Math.sin(rotation) * (lineCount / 2) + 0.5) * lineHeight; - textOffset -= (rotation === 0 ? (lineCount - 0.5) : Math.cos(rotation) * (lineCount / 2)) * lineHeight; - } else { - textOffset = Math.sin(rotation) * (lineCount / 2) * lineHeight; - textOffset += (rotation === 0 ? 0.5 : Math.cos(rotation) * (lineCount / 2)) * lineHeight; + if (crossAlignment === 'near' || rotation !== 0) { + textOffset = (Math.sin(rotation) * halfCount + 0.5) * lineHeight; + textOffset -= (rotation === 0 ? (lineCount - 0.5) : Math.cos(rotation) * halfCount) * lineHeight; + } else if (crossAlignment === 'center') { + textOffset = -1 * (labelSizes.highest.height / 2); + textOffset -= halfCount * lineHeight; + } else { + textOffset = (-1 * labelSizes.highest.height) + (0.5 * lineHeight); + } + } else if (position === 'bottom') { + if (crossAlignment === 'near' || rotation !== 0) { + textOffset = Math.sin(rotation) * halfCount * lineHeight; + textOffset += (rotation === 0 ? 0.5 : Math.cos(rotation) * halfCount) * lineHeight; + } else if (crossAlignment === 'center') { + textOffset = labelSizes.highest.height / 2; + textOffset -= halfCount * lineHeight; + } else { + textOffset = labelSizes.highest.height - ((lineCount - 0.5) * lineHeight); + } } } else { y = pixel; @@ -1358,6 +1377,58 @@ export default class Scale extends Element { return align; } + _getYAxisLabelAlignment(tl) { + const me = this; + const {position, ticks} = me.options; + const {crossAlignment, mirror, padding} = ticks; + const labelSizes = me._getLabelSizes(); + const tickAndPadding = tl + padding; + const widest = labelSizes.widest.width; + + let textAlign; + let x; + + if (position === 'left') { + if (mirror) { + textAlign = 'left'; + x = me.right - padding; + } else { + x = me.right - tickAndPadding; + + if (crossAlignment === 'near') { + textAlign = 'right'; + } else if (crossAlignment === 'center') { + textAlign = 'center'; + x -= (widest / 2); + } else { + textAlign = 'left'; + x -= widest; + } + } + } else if (position === 'right') { + if (mirror) { + textAlign = 'right'; + x = me.left + padding; + } else { + x = me.left + tickAndPadding; + + if (crossAlignment === 'near') { + textAlign = 'left'; + } else if (crossAlignment === 'center') { + textAlign = 'center'; + x += widest / 2; + } else { + textAlign = 'right'; + x += widest; + } + } + } else { + textAlign = 'right'; + } + + return {textAlign, x}; + } + /** * @protected */ diff --git a/test/fixtures/core.scale/crossAlignment/cross-align-bottom-center.js b/test/fixtures/core.scale/crossAlignment/cross-align-bottom-center.js new file mode 100644 index 000000000..5eae38856 --- /dev/null +++ b/test/fixtures/core.scale/crossAlignment/cross-align-bottom-center.js @@ -0,0 +1,29 @@ +module.exports = { + config: { + type: 'bar', + data: { + datasets: [{ + data: [1, 2, 3], + }], + labels: [['Label1', 'line 2', 'line3'], 'Label2', 'Label3'] + }, + options: { + legend: false, + title: false, + scales: { + x: { + ticks: { + crossAlignment: 'center', + }, + }, + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/core.scale/crossAlignment/cross-align-bottom-center.png b/test/fixtures/core.scale/crossAlignment/cross-align-bottom-center.png new file mode 100644 index 0000000000000000000000000000000000000000..b817e5bc3bf11fad1874edd445a0f58343d743dc GIT binary patch literal 12544 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%0Ace3!py?;bk$gnir0=P>?8+x;m< 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 literal 0 Hc-jL100001 diff --git a/test/fixtures/core.scale/crossAlignment/cross-align-bottom-near.js b/test/fixtures/core.scale/crossAlignment/cross-align-bottom-near.js new file mode 100644 index 000000000..69175babc --- /dev/null +++ b/test/fixtures/core.scale/crossAlignment/cross-align-bottom-near.js @@ -0,0 +1,29 @@ +module.exports = { + config: { + type: 'bar', + data: { + datasets: [{ + data: [1, 2, 3], + }], + labels: [['Label1', 'line 2', 'line3'], 'Label2', 'Label3'] + }, + options: { + legend: false, + title: false, + scales: { + x: { + ticks: { + crossAlignment: 'near', + }, + }, + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/core.scale/crossAlignment/cross-align-bottom-near.png b/test/fixtures/core.scale/crossAlignment/cross-align-bottom-near.png new file mode 100644 index 0000000000000000000000000000000000000000..a7bfa8de1da6c4a3ff3fbb108fa854fa68b6f1cf GIT binary patch literal 12728 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ν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 literal 0 Hc-jL100001 diff --git a/test/fixtures/core.scale/crossAlignment/cross-align-right-center.js b/test/fixtures/core.scale/crossAlignment/cross-align-right-center.js new file mode 100644 index 000000000..4e56f15b0 --- /dev/null +++ b/test/fixtures/core.scale/crossAlignment/cross-align-right-center.js @@ -0,0 +1,31 @@ +module.exports = { + config: { + type: 'bar', + data: { + datasets: [{ + data: [1, 2, 3], + }], + labels: ['Long long label 1', 'Label2', 'Label3'] + }, + options: { + indexAxis: 'y', + legend: false, + title: false, + scales: { + y: { + position: 'right', + ticks: { + crossAlignment: 'center', + }, + }, + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/core.scale/crossAlignment/cross-align-right-center.png b/test/fixtures/core.scale/crossAlignment/cross-align-right-center.png new file mode 100644 index 0000000000000000000000000000000000000000..baa12cb7fad6844d367b60d729bf68391ca8be9f GIT binary patch literal 11111 zc-pm^XFwC(v+z#{O?neVX<|X?ih}e|R1^hNlpYX4q$|A>Km`N@rGp46AUu@NOK3r< zB2{{qCJ=gWfx8iWuKe$N-}lp-50IUl-92Y!&dhIS*I!NLIyJ>{3IG804JF0901!c6 zVSt~n_cogrxf^#SPl_(6=9UU_p5VAYz6w<`hhOd zU&RlK+ZrSfrD?1W{r$kbMTS56KWn%C)RD% z1g{#2);B;{KcqQn=PgOkZY`5v}2#%N~17ButaDyE!j43|@gwMG zHqzuLABZ|hS}=HkNXeO2eRxQOl8s?EyA9hHrBf!@Z^KY(#vSor?!piX^qZZW_vAB7 z-RZU1&HQ(n9$Z(HS^bRp(AmDE;?z(82T~+-(})q}hp8aJ-*0B2IwSM1vHKk0FR?n~~a32x!suwIiyZn@SH!roQdp^Xyaq|$u7oy z5f%fq3poL~mZtl8nnR+6tJw;fJo_S)JuJ^k7SQEnZQW%%BpMEYrmuR)T3kjCSCg(B zHXutiP4WA~2CVxsec%xP8c^sJyN&eU25cY!*_!;!IlF4Qucg#J$iGO`raiQjF(toc z`xAgmy19$-&E+Y*yTT^(kg+IhVpgb3xwzBXN)ip43M?c6S588DL^>;KbNN>T#vV7e zF&Z2xVLu&af1^{j+0nhN%oFpAMwa|6s{e}f z&SI_JJAhiz<^>_|D=5Y-{&-6Frwi%)aw;0whJO^b)?=kz3;4Bis{HqIj2m7dsKL30 z+-g~}L$`iT4)i_o`RSV3@((h!&j@Jeg`B+|qZH12zyBD0Vpd8VIeon{p_K(%M+Xq0bF^EpEcP`p~I;7fDSto_{Pun+A` zJsTyaDz_oe#gXcdBWRIlBnf&Y4)t0lacA7OR-Pdk+a140UC6QQ6BSdQAF8OxvmP3h zd)vDQ-R+9f#$3sKBD4&fsieq=1$|RxVG7ObY|oyr%ng)u-=$_nt%Mx`O3nH&YzmC& z^B{+zV*sTqZOS&|;Tqqv9)5k7l3J9CrR9+7ZhSck8(#UL8fn`s-DSz!o&V2!(VkvC)IEH-F>qgPN_dcJ7}u(IG?) zI5-Kz=650a7|-4cf!tI)yNmNE0^iqqol}n(c%jZvgj4J?s!IL5J65@xD$0Hq89%>m z-n-kOp>Hob-<_>+?KRu^z0GFNSKw@R`Bq8t4jfR-Xh_?tNlU)8oO5gN z)3LDH=7rkV?0lcD2S+T9);2t=W&cIIm{B;$yUu_ppXVgs2xJxMXHaT>FC9vR4Lg6Y zzfB3+;Qena^&AJrcbKdzJa!?+z?3oa?p`))2f!wgA0S?{v1j*b?yK6A2n$_qTJii9 zZx;AeCSJ#?xY|=qMO(8 zoNfzph5mOOM{#d!=RNnf4PB3UZ%t3sDA0&kC9Me+4HFfbqM_aVaSfLv_w^<9_`+9O zN9FSwI)xE(KBUDJZ(wynh5!^V+P2Rb{u_bpZflc>FOuJF-*Oxv+3Ph&*Ke)j2KdV% zjpxjlZ)23baX!n8o?W(fJlnOLo-@zqU-4yz6b^Zmr~@SjcbWOU@ko8l87gil16oO>wcd&w!%KRcAN?yOM0fo=+Y+kv(Q{fa)mup;mGrw)pAVY}JL||$&O|7Y5KZ|k` z0g2@fmWd}4Qci9vCRqH|YD2vvE#x>o$CY5H6)8%P_zNvB-j_qJUBC|f$ibu}%&ts7 zp1Vbir#`c7pzfOnTw38fDiHasgCp5tLq0^~tn(N zikLQw3~LlhcM*t=(g45o999=oK4@$UA*UlqQB(Dz!@nl1FG>_ zCG@8#mzeN9!n)h+A}|7VAOw~r123?WWd)z;z<->_536!UvA}v}=pud$6Ex^VfgSU^ z4&4kwjf?w9)Ck=ACaVeyV|IXMCi#3^D+|&G^yAsqavcSinBQ1l!{60cd~hNk59l}RQf4DeDhZS5 zh8x(_DU*N*GGYs{9`+3hgV=|T4|L|1jX@*zP1?#ie*vFV7En8IG7(73$yL~TApX|Fu-Q!POb5#Q$$@mLh0oE`evV9(w z)qgT;;IS{)oam?uDM}ig)saz#l#@kJrsg|x0pnvj0so$e>@NW>!-#0^e74%%Mp7>>Yb-w^eSd&g+tE{WL~mU9G4Cg!%(=FH+}?wMhtJ?1C0n#jbq`G}n4y+8-Hae;4LywRyh|AYfuM>d8q&sI%NTUsLqI zZJT|Ux1%j!F;s6TNX_))=ikormWG3K-7SWirckZ%)|He#ug8SHmL1S(8Rzy;LT>9t z;A2JFgZK$hcUbexMSoAHL>i(Vc1kUxtP`%e5eMX&LPju%FyHeB)CZIbfMOlcyf63F z0scn-utZ-ao^;xQzdlrk;Lrzgfp&qL%ZFNCk$?Vqp@n2D=plY$TP0#~nXozjI5mP4 z%SC?p#4O^4Ph|X`y|V{~5m;B?MAh;*x6tx`oJIMcXJHwDD(o2B{;Y+&7wZp(9t=3x zm87-%KuhKDulErStpOKvK($-zG{sTg#J29zSlHi7VIDgM>b&pSs-15B@(Wu}U;1La zXqndlNy1hssFiaw1{Nh@|Bu^ZHA`EGqqQl-SiP$>%Ucl7)^UakZ+8s;z^!jbg zWpn2HzaSh4bzYtzq`xEx$>)~;xu1q36Yv{Z=Pve>OCI7H2|&; zyD172$<-+wB{(erOD*GV6~@kBIL>kK4aA4_-XxSpjWL&1LR7E(BrYbHAOL`Y&J#pf7I(?U$9>AB#1}_8}*Na$(*XA8oDQE z`wAm}e)ToK2L5krPY~Ig?no<%59ibPmLTWTPg-{VUh)-sTH>7#z8r5kq+RN&S@ih{ zxEgruf;<7p8F^If_Bbz_h3Pa@EPSC%dQ|(`X0<~@*@u++EfLC!m`&U!(I@EP*O$dM zX%8|eK;nsE@^``H*SN@?Q@qCsX$`@F(cLQKrv(<>S(W}}O@o&+(1ztk^>07k_VE{S z!nh(QdR`v{- zq(XMh+9#t+Ha@Gy3rf4L@vlXFc+9{=J_7p))h8d!_|mj+1;Xk&po_N4Xa5VgrPiL z`krN_d%N3bfB{sM*kEB~MbQk+vy0{hSO7ypnJ&wBb(exOw-QrE_RTbcvN z?CsbVRwb;ra_aH6DB#*s?wnc!GdDt(-Ke>veu1&6wTMwdo$fsCFg5T1hUglTg{mtC z7Si)u_PEaa6V|0CF`}MhZ?0o%H_LaHlnYsfHGg#B?3d%`Ho6qz8PtxEzc#pG02L!2 zO+E0bI)$0B17z!6OA&&4(>atn1s3NYaN=iL6lh668>RJWh}DR@IsDH?E#D->rKS@D z@B2f9;Ju9KGZim|;5X-36opGgC+^+YpA~ZDKHw@9hOB~sGWKs4gA62PTyJ;-Ae@?h zXDWk2GJsmBVII0^1|gR9g-_+IE`Q>lG$DG{si_q8i_!iY4Y`eg+dZM_*le=@j*td& zHD>a#LFYpud45cCnF9WoAf))ciw4o(Lk8;|CytW-CE&7^Ud<%_dq`>M{C7U8zoYSl z%e3B+zlS*S3`J`k`%8fOzS>^G@b{1fm2wfZ@ZXYXT&m-lzXii_ZYIcwe@iZQ-J8Gp zw*V`-*;M)k%G}w07WF&K$OttEz+APKzw-snMsK&&GF+Mqa8GwqvY)`A6l_jcZ;X1W z1A}4(gA!TGE8k-n)`iQaG_)cf4LyKT>P81rAyoi`^an+d!7XT$%$+s-#*56e_#tX= z>eBm~N|^3x7wi(kZ}w*(pG<_I_!>Y33y40K_^s5eK6u1cY|g9^1U}?)DtJDkzxqY- zR4C70_M1Wf(S93iuaF0Si@;um+JZAFxc#xI-a|%LIQk`doUVE(`zxl z^2PHJ_u&Jyj$JNbb6kx#-fl48mZ0z9xc2B%;1j2VWNQS{n^C`;h{s*tEo&dXrg-Gw zlYY8GJubhO9KTAL4`WtSlGt&v!=1K|A8N(XB!`$P#C9sEhWhYopG-b$GKU@RPwBdR zdZuu=J@&s%P53uu&wsqr_^#_?xnFwIrXF;zMesE?8$HT~XBzrC1r;Cs`0MO_Mm;vy z5xn3DH@D=HesyVkLg{=>lk#|u+dYfs9G_F#rI1;b`1{Zhf6>oI^`tXHMlb0kgO`(^ zk1Z37G1jqKhVD(*h>RZBKG>_2umTfjtpC%+&PR~;z66Qr+=n0R*7N{W$9GzSdVAWs zl_DwsT3|B=N~ytajrVYW(Ma{tDZPt_JBOyxO~~;>o`9M$wMbMZJ)~%Efge3-hZ~F` z(m_FX^@mNAXe{9xez^0Q^EvyCAnRe{=G`(u+Z;Y~?UHEQnZw@qCSq#l{^8bV-TRtr z7^A~hYr7a%_U-SUtn2UIWQ6n$s=~2-hXK$dj4ZR^VQe!Q3%oC}Wp=twg}$ypXP z_VHSkGz;?egmikXhuo#FcXJ*XfiD3}e{fSX9;Q<`R6>O0Z7$C9XnrqEpuD?f zF81rrrmW9}$~WYjWcS=sA7sQdP~@3)P=LDGE6m>p_-S8ubKGQH%A_OIbQDxTy^yIZ&=2rV1hl9UGqpZ`#iyxl+qN>5N+CER-M zp%3+kZwD)%oGCM`ex-tq6wo=_rE43Mu3v$KR(+OT(t)30;YR4$;@hqehkSth^jTNv z5jwG>wZV~ZPF?>7QA(0|SEkKe@vob>&J5$pmJbjQd`bihgRb-S=~}sCSYA7 z+%|2ZFB-pM-0*^vVfJtpi@~gGa|3-axqm*BujD4Aug&(s0SC>S2r>nW^{mR5YQ_h) zgSc)Y+C+C6DK=4tU+X&qh6z**Z4E7m`gwfW9ikvA{$k1W?#i=|+Z9Arsh{8ThVrO7 zoB&79PIqSLPyxGO?DuGq0TWC-V&1;}&h`2rvB4B$7&u9#QY`po$-r;6*vhiCD4qbu z?}<>aGMegqPB~o&nHz*WaC@Lec3?o(ZDS!(8N{4vDI>yop*{C@ZAScgFt$1QUR4=OmLKTzFGbABaB835dt;~m1GSssZS`1kg!YGwU|ShBGB5j z+Z{jgRpE!B{Ig6m~MFu7;%F0&z3gmj$7J@RnLGyPFB zyFp9y0_a`bfEagd@>8&bEao%9>tqqK;T~5@&`ayG)d-du0GW4L=>h!|{3Tt*u* z(?GLmtZ9Y-RP`)Sfs2+i#TX7y7ykKcS@3uzUEfzr*4z1vd!-YUnr=`bdash7B;h# zUK?~{RXbLh9Jsd*4w?W4dc^4-l&1*+?`$;qEAZ-9MpB{V{=nElV5fQ|s|=FJ;?%Pm zY2^AXYuEu7+#qNC-!|L74WH(-*tRcCw_5faLo|e@LeJ8ln*0x=+}PxSjuH~dqDcDK zs0bw>;c8v~^J=QUyJ{$>KRrKa7z3>C|9G|E1EJ-y0{S$xJe1H-3><{i9Jp0Y(2?kg zvhgAvGA@999RI5Ub<@9upl?eWQbK$nG!fAzw7?Z~!?7HHp8uU4mtEyRUE^NLxKq*2 z@}}dzpVStxZ9jH9kL7? z$VaS1=6;V7i2oP32+6!2M1^@?1W7OAq7(ifW{Q`9KaKKJ7n^4JUPE|9t+|A7E~ouVz~XTPAV@E)W#1D% z_L%M|G@0e-!g$>XgW`%`ZO!F_X~bY>*4i_)L9pa|&vInN&Q(GxT=(RZ^e~m%+*xjZ zL?|+)mg-JHIf|utb0T)UX!NzR3ubHhpR`QgHLam?_wn8B`SmuQN>rB1su`h`VN~f& za`913U}AyiYKO+s!dKdcILE>Bgx16MI+U*$3Z#h(tOrYbdRDtCcJDI_Xot10RR^$? z6wrG@XwV%u|43i6#KCfg5TZ-wFlmZIDibLA<77}AW^tX#t{qeL+zPemFS@h4Q7ik6 z(AMZki`>b~wXVQFAUqXorG*Cn-l_JUtf!^y|FHI3|r_*YAhfYRwx`yL6^&We=9QHsm(T z;HIBKd9toO_1<`(NYl9#(xQCXf)TxJ@FP`%3E>H?&VR6mG|8 zJvV&VJa-o7mcNDbDd(GYl&;jT4|#I_@G|)F{Kyg(PODV=ntgn=OJB8jf`ALnQp`ah@i!Xl{ z8J|u=t5CptIr8FhrO$)8m z&~k6KaL57mwDl^>Zyc*RVI4*(ScD*@VLN9(-M-kgrc05EUgu?QkF~;_PtN@b5z7_V zwLw?w;;H0V!h=pEjY|?qk_H-?4dvx#<12P_rR#&PaX}PP{=N=uan#eG4Vt_m=k^sw zH^@?kk@_CRY>*dRbY3!=f;=J>Jgq+yS(jtnFxH`=A6{(x3nO<2pXj;X>d?3|IqU&} z55`H!*(#rE2)O5I9|X7)#)ZULQwuqVsMMMTfW^T!xW+_KF*YSH|b_;EwmeF`wDBz zx922#AYw^`goMogs&`|lL5Rh8nF!9K@@{gg@O6NM;5)mv8*S-YBI|{Z8)IOg{2#Yh zE-aL0;k@^CuOHzcZ3)`zg%w!#O^l=TV+J7Ut5sZ=YF;HSn4&K!5;@)W#osr1oABiI zCd6O^-#xpt9@;F`^OXE>W1~|iws&xCkt3@&{Tvs;0NRnaeWy3KKKc0e?zSllIh&Rw zD;(WWkzQ5btXK7T%K%=|atcBl^_i&ongUrR3{L8FVtpgupwWBMre^AMyr4v%s+2lE zg(;g~A-+MVA`HSS<>iUSap*S(t%MDQND_O8{?vOs&husKV`3GXLAuW4;e(GoMl3z| z@aycQe8l>W1NK(80%Y^_OP9X!3G(%pxjL?YdKAB#p;KrD5Fg+uzoJ?&3gg-sxSp*{ zkB*|5fPp8k_%@^$W8(2MCONjhRPM+*LCWlp*@RqeZjEYVGE}d`p}L)8wp-d|Md=8j zK*_yCz_@nZI4$>}?b6S$c@<$IntBn4^*{BI+M4`y(WHrO6ACqFp#2k0#_875H=gBm z^4LWqze$c``M1e7t4=wM6spyDIrZ5K=tdUU$v%I)!{jhR8%LaSMP_ejIdceCl+c29 zB{geL`58w}T7dK54BCY5H5VZXMMtGbYJb^0fhWmAPgoW!)+bxPO7>Bzp%ui=Uq}H6 z?*JdBR2n8;@|fdg6EWsSEeUc+B7`v4X$qH|i2F|fU3Vs~)EI_JzI~M0tTTNoLe37K z2eF~m(DUF0#%>v_{wsxfA6&KVoRxokc>oaG=-%`mSrSZdzPUMnKr}jP|SH2Bv7ch=wB`-<@wBsngch=z$4jk!oe^rUr^gv;x}T0w~&=PJ0x? z5ul2na*2|W7#mH{h$&Q&#jiwV;z^W&S#Fcx*2+|9Tcu0+Tp)g6-s9KfJ2G3R=Ap03|GH4V0=w)zZikXIZ{bc|xS#gG9+luzVHLu9*(}WUTL1OG}m z)?-q#%ND=YRb;+%SvkRcuXirqbxvH2e!3_3b05=2gZ}Q_NFT^!pn|O0Zs;rFMTND} z6wY=siJGZpeD6^Hkhy0U^^hzSa@dD)nklN3Q!+>Jg;oQY!5$>ag&lLF+WVj2z)4Cg zyNI;f0mq@)PU+QW2+r!vOV*Gc>x?Cste9-PO?K?1)vwBU+(3}sV&AYQ%b+3U1ujAF zai3K0!Vn`l*ro9X)6wiL2yEHaNSa%4bp#_GR(IyMWx?|nOkk)(NDe= zJ%T)*Xpj)f8B``CS_)-qXCCh@qH`};*&FOd(G6T?!Mpk=g=J>Z!{~X`9RoG}Nf{mz z5_f%6@H~QCPk=HD%V15^ep@((yG3F4;(3Hpp57z0C8E!} zM)nCM1p;HLQu~r?jzS5_Lc^)?oSfr=IXrb>>R7_8d@W$7Y)?!`Z{d{gy1pNm z{O5`4ut_ow6bQrQ0p o(wzXPd!=)p>EMM_M4t45=N02tsSYE+O`zr*S5*`<4LI3~& literal 0 Hc-jL100001 diff --git a/test/fixtures/core.scale/crossAlignment/cross-align-right-far.js b/test/fixtures/core.scale/crossAlignment/cross-align-right-far.js new file mode 100644 index 000000000..fc7906f46 --- /dev/null +++ b/test/fixtures/core.scale/crossAlignment/cross-align-right-far.js @@ -0,0 +1,31 @@ +module.exports = { + config: { + type: 'bar', + data: { + datasets: [{ + data: [1, 2, 3], + }], + labels: ['Long long label 1', 'Label2', 'Label3'] + }, + options: { + indexAxis: 'y', + legend: false, + title: false, + scales: { + y: { + position: 'right', + ticks: { + crossAlignment: 'far', + }, + }, + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/core.scale/crossAlignment/cross-align-right-far.png b/test/fixtures/core.scale/crossAlignment/cross-align-right-far.png new file mode 100644 index 0000000000000000000000000000000000000000..ae02309c1bdab18d49ab9d61ed50bb2a9adfe360 GIT binary patch literal 11174 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 J@|4UU{~wV`gA4!w literal 0 Hc-jL100001 diff --git a/test/fixtures/core.scale/crossAlignment/cross-align-right-near.js b/test/fixtures/core.scale/crossAlignment/cross-align-right-near.js new file mode 100644 index 000000000..acdc5bca7 --- /dev/null +++ b/test/fixtures/core.scale/crossAlignment/cross-align-right-near.js @@ -0,0 +1,31 @@ +module.exports = { + config: { + type: 'bar', + data: { + datasets: [{ + data: [1, 2, 3], + }], + labels: ['Long long label 1', 'Label2', 'Label3'] + }, + options: { + indexAxis: 'y', + legend: false, + title: false, + scales: { + y: { + position: 'right', + ticks: { + crossAlignment: 'near', + }, + }, + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/core.scale/crossAlignment/cross-align-right-near.png b/test/fixtures/core.scale/crossAlignment/cross-align-right-near.png new file mode 100644 index 0000000000000000000000000000000000000000..d0cd8112274075249a1de7238d1cb41bba7443fe GIT binary patch literal 10867 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 literal 0 Hc-jL100001 diff --git a/test/fixtures/core.scale/crossAlignment/cross-align-top-far.js b/test/fixtures/core.scale/crossAlignment/cross-align-top-far.js new file mode 100644 index 000000000..2d6f8ceb3 --- /dev/null +++ b/test/fixtures/core.scale/crossAlignment/cross-align-top-far.js @@ -0,0 +1,30 @@ +module.exports = { + config: { + type: 'bar', + data: { + datasets: [{ + data: [1, 2, 3], + }], + labels: [['Label1', 'line 2', 'line3'], 'Label2', 'Label3'] + }, + options: { + legend: false, + title: false, + scales: { + x: { + position: 'top', + ticks: { + crossAlignment: 'far', + }, + }, + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/core.scale/crossAlignment/cross-align-top-far.png b/test/fixtures/core.scale/crossAlignment/cross-align-top-far.png new file mode 100644 index 0000000000000000000000000000000000000000..ea5c88d501c83abf496523e0ab92be443c59f9e1 GIT binary patch literal 12016 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 R>jpqx$8=3}%CwxX{0GTKB**{& literal 0 Hc-jL100001 diff --git a/test/fixtures/core.scale/crossAlignment/cross-align-top-near.js b/test/fixtures/core.scale/crossAlignment/cross-align-top-near.js new file mode 100644 index 000000000..e2a97974e --- /dev/null +++ b/test/fixtures/core.scale/crossAlignment/cross-align-top-near.js @@ -0,0 +1,30 @@ +module.exports = { + config: { + type: 'bar', + data: { + datasets: [{ + data: [1, 2, 3], + }], + labels: [['Label1', 'line 2', 'line3'], 'Label2', 'Label3'] + }, + options: { + legend: false, + title: false, + scales: { + x: { + position: 'top', + ticks: { + crossAlignment: 'near', + }, + }, + } + } + }, + options: { + spriteText: true, + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/core.scale/crossAlignment/cross-align-top-near.png b/test/fixtures/core.scale/crossAlignment/cross-align-top-near.png new file mode 100644 index 0000000000000000000000000000000000000000..932166863ef2756c3b1556f8bc718113edec646d GIT binary patch literal 12017 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 literal 0 Hc-jL100001 diff --git a/types/scales/index.d.ts b/types/scales/index.d.ts index fe19273c6..81e1cce2f 100644 --- a/types/scales/index.d.ts +++ b/types/scales/index.d.ts @@ -143,6 +143,14 @@ export interface ICartesianScaleOptions extends ICoreScaleOptions { * @default 0 */ autoSkipPadding: number; + + /** + * How is the label positioned perpendicular to the axis direction. + * This only applies when the rotation is 0 and the axis position is one of "top", "left", "right", or "bottom" + * @default 'near' + */ + crossAlignment: 'near' | 'center' | 'far'; + /** * Distance in pixels to offset the label from the centre point of the tick (in the x direction for the x axis, and the y direction for the y axis). Note: this can cause labels at the edges to be cropped by the edge of the canvas * @default 0 -- 2.47.2