From d1b5d774afe3b7334b8bd9fadbb5bac03fd58337 Mon Sep 17 00:00:00 2001 From: MiniPear Date: Mon, 4 Sep 2023 11:42:02 +0800 Subject: [PATCH] fix(axis): labelAutoHide --- .../static/alphabetIntervalAxisOptions.png | Bin 0 -> 32174 bytes .../static/profitIntervalAxisTransform.png | Bin 0 -> 28042 bytes .../static/alphabet-interval-axis-options.ts | 50 ++++ __tests__/plots/static/index.ts | 2 + .../static/profit-interval-axis-transform.ts | 48 ++++ site/docs/spec/component/axis.zh.md | 249 +++++++++++------- src/component/axis.ts | 2 +- src/theme/light.ts | 3 +- 8 files changed, 252 insertions(+), 102 deletions(-) create mode 100644 __tests__/integration/snapshots/static/alphabetIntervalAxisOptions.png create mode 100644 __tests__/integration/snapshots/static/profitIntervalAxisTransform.png create mode 100644 __tests__/plots/static/alphabet-interval-axis-options.ts create mode 100644 __tests__/plots/static/profit-interval-axis-transform.ts diff --git a/__tests__/integration/snapshots/static/alphabetIntervalAxisOptions.png b/__tests__/integration/snapshots/static/alphabetIntervalAxisOptions.png new file mode 100644 index 0000000000000000000000000000000000000000..d91e77404769b5869006dc01ee27b481e8482eb2 GIT binary patch literal 32174 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

MK|&5+~W&{hxaPi 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ℑmieFSA}JV)efzrWlkOy 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%0D$d{9oS~Rt(;dr1X6xnT_}X z9@yk&?xn0);wXxGZ^)T|c>Sf0UL(Ok`v}$5)fHJ>+`@2L6}k7N?65I8v#(9Jh^dCM zEx_sW^C-m@lLml8NxJ9Egse8;5hfL2lZb+>g(|yYi>1@uy&JQje^|T4y{VNFbUr$1 zXT2|U|DB~Z_c!G?oY-bQ$>v#fp+7z=)8Z0L^p*ghk;-pQ3)r72z-Tozt|U?zuCvt_ zb^ls)1q1Kub%bUeKAPrd$TwMqej<+|kpRd^UVO0*`t(3!UYN?U(I!Fa3m|Uwk>II3 z@R~&%FwgSdO=_`IABa%OJ^y0tC?Oyuq%(y=?wEWC`qPT1KYehYQF`Pp?FpVm&yTDT zacpxD(obPE2hegcVW7#&?@_s|)znK577D^&Vw00}BA8|(4|AtV1MJT1?Xh{&C3s#& zI7GT(!=l%)FtZXr`PGZ2)$nOGdJ%X!USj)9;(wECC$lE z_;(*5{QQ|ajXSLZ5T&JN08m)iD>R)xFPkz{u2Gc03#HgZb{iGxc6qv;8yHL78uMk$ zy$$y1qO8(kMhxspKAIw&dc@##TLk;YzuKPRiSl#g=01`0DSEQtg6peuU)Rll_E1iS zIJi-PY|-q|-vh9joMaUcw&#+aXZ_XZVP|{reI*HL;MlP3a=FB(ZrwOmF-Z)Qg#3Nb z*Y1oT)Ej|3a2zg(e_n6U&j*%#v?$hR@Bn7=yT9WB7BjxvAKKrfa<<~{mP}P!0IkP% zPwn4F04do$P7lnXA4%z~S`LOa7g_{-iX>LwqnwYtAog&BwnJ)h;Pu7y zCDUa9!+tt1j)V)cF#!#XU)awG&Gcus@BcIt72X#C*5k_I52^VC1SsCJT%4SCE$j2F zlI8E*dAJ-dur?s5a7_egJQg{)_rfSv#`C#Cz?XsO>s;+*o?n^|eMP0bOnDMEtHhLH zeRP=`4*MXq04emIpAHSWk4b=Iyx7LMv_YC!F|-7E@ks#T%jO`->+`bm{BDbT83KpODQ|;n@Ul zhB`l+UmCWtH-tkRhe&Vrd!sVkYG-u^v@~x8HepEIf-m3RZw8PAD9W1|7)Tb z75Ciy+0$gT97o-1yrc{!AMJjOV7D7!Q1j?LASLU z1W;t@lHLpDh%>`Wk$-2vzy!$fB_%=7W{I0%L~rvN zFbXHUGA`1+?i!Z{TCH4O~FH;2zQwR;Uw}luW32(jX}xs)!q{49gBN z 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 u_+U#3J8ggK|IPmY`|14O6%;V}kC6JHoo$ i % 3 !== 0, + + // Label + labelFormatter: '.0%', + + // Grid + gridLineDash: null, + gridStroke: 'red', + gridStrokeWidth: 5, + gridAreaFill: '#eee', + }, + x: { + title: 'Letter', + labelFormatter: (d) => d.repeat(3), + labelFontSize: 30, + labelSpacing: 30, + }, + }, + }; +} diff --git a/__tests__/plots/static/index.ts b/__tests__/plots/static/index.ts index 251c6151f0..ef14049358 100644 --- a/__tests__/plots/static/index.ts +++ b/__tests__/plots/static/index.ts @@ -281,3 +281,5 @@ export { alphabetIntervalTitleAuto } from './alphabet-interval-title-auto'; export { alphabetIntervalAutoPaddingLabelHide } from './alphabet-interval-auto-padding-label-hide'; export { settleWeatherCellLineXY } from './seattle-weather-cell-lineXY'; export { alphabetIntervalFunnelConnectorLabel } from './alphabet-interval-funnel-connector-label'; +export { alphabetIntervalAxisOptions } from './alphabet-interval-axis-options'; +export { profitIntervalAxisTransform } from './profit-interval-axis-transform'; diff --git a/__tests__/plots/static/profit-interval-axis-transform.ts b/__tests__/plots/static/profit-interval-axis-transform.ts new file mode 100644 index 0000000000..5e3907313c --- /dev/null +++ b/__tests__/plots/static/profit-interval-axis-transform.ts @@ -0,0 +1,48 @@ +import { G2Spec } from '../../../src'; + +export function profitIntervalAxisTransform(): G2Spec { + return { + type: 'interval', + data: [ + { month: 'JJan.Jan.an.', profit: 387264, start: 0, end: 387264 }, + { month: 'Feb.', profit: 772096, start: 387264, end: 1159360 }, + { month: 'MJan.Jan.ar.', profit: 638075, start: 1159360, end: 1797435 }, + { month: 'AJan.Jan.pr.', profit: -211386, start: 1797435, end: 1586049 }, + { month: 'May', profit: -138135, start: 1586049, end: 1447914 }, + { month: 'JJan.Jan.un', profit: -267238, start: 1447914, end: 1180676 }, + { month: 'Jul.', profit: 431406, start: 1180676, end: 1612082 }, + { month: 'Aug.', profit: 363018, start: 1612082, end: 1975100 }, + { month: 'Sep.', profit: -224638, start: 1975100, end: 1750462 }, + { + month: 'OcJan.Jan.Jan.t.', + profit: -299867, + start: 1750462, + end: 1450595, + }, + { + month: 'NJan.Jan.Jan.ov.', + profit: 607365, + start: 1450595, + end: 2057960, + }, + { month: 'Dec.', profit: 1106986, start: 2057960, end: 3164946 }, + { month: 'ToJan.Jan.tal', start: 0, end: 3164946 }, + ], + encode: { + x: 'month', + y: ['end', 'start'], + color: (d) => + d.month === 'Total' ? 'Total' : d.profit > 0 ? 'Increase' : 'Decrease', + }, + axis: { + x: { + labelAutoRotate: { + optionalAngles: [60], + recoverWhenFailed: false, + }, + size: 120, + }, + y: { labelFormatter: '~s' }, + }, + }; +} diff --git a/site/docs/spec/component/axis.zh.md b/site/docs/spec/component/axis.zh.md index 1f0549ec40..c9df264678 100644 --- a/site/docs/spec/component/axis.zh.md +++ b/site/docs/spec/component/axis.zh.md @@ -3,123 +3,169 @@ title: axis order: 1 --- -## 开始使用 +绘制坐标轴,目前支持直角坐标系坐标轴与极坐标系坐标轴。 + +```js +// View Level +const viewLevel = { + type: 'view', + axis: { + x: {}, + y: {}, + }, +}; + +// Mark Level +const markLevel = { + type: 'interval', + axis: { + x: {}, + y: {}, + }, +}; +``` -G2 会根据当前绘制的视图类型自动选择合适的坐标轴,目前支持直角坐标系坐标轴与极坐标系坐标轴。 +```js +// API -axis -
-axis +chart.axis('x', {}).axis('y', {}); -```ts -import { Chart } from '@antv/g2'; - -const chart = new Chart({ - container: 'container', -}); - -chart - .interval() - .data({ - type: 'fetch', - value: - 'https://gw.alipayobjects.com/os/bmw-prod/87b2ff47-2a33-4509-869c-dae4cdd81163.csv', - format: 'csv', - }) - .transform({ type: 'groupX', y: 'sum' }) - .encode('x', 'age') - .encode('y', 'people') - .encode('color', 'sex') - .scale('color', { type: 'ordinal', range: ['#ca8861', '#675193'] }) - .axis('x', { - animate: { duration: 500 }, - labelAutoHide: true, - labelDirection: 'positive', - labelFilter: (datum, index, data) => index % 5 === 0, - grid: true, - style: { - lineLineWidth: 5, - lineStroke: '#675193', - labelAlign: 'parallel', - labelSpacing: 10, +chart.interval().axis('x', {}).axis('y', {}); +``` + +## 开始使用 + +```js | ob +(() => { + const chart = new G2.Chart(); + + chart.options({ + type: 'interval', + marginTop: 40, + data: { + type: 'fetch', + value: + 'https://gw.alipayobjects.com/os/bmw-prod/fb9db6b7-23a5-4c23-bbef-c54a55fee580.csv', + }, + encode: { + x: 'letter', + y: 'frequency', + }, + axis: { + y: { + // Title + title: 'Frequency', + titleSpacing: 30, + titleFill: 'steelblue', + + // Line + line: true, + arrow: true, + lineArrowOffset: 10, + lineArrowSize: 30, + lineLineWidth: 10, + + // Tick + tickLength: 20, + tickFilter: (_, i) => i % 3 !== 0, + + // Label + labelFormatter: '.0%', + + // Grid + gridLineDash: null, + gridStroke: 'red', + gridStrokeWidth: 5, + gridAreaFill: '#eee', + }, + x: { + title: 'Letter', + labelFormatter: (d) => d.repeat(3), + labelFontSize: 30, + labelSpacing: 30, + }, }, }); -chart.render(); + chart.render(); + + return chart.getContainer(); +})(); ``` ## 选项 ### 标题 -| 属性 | 描述 | 类型 | 默认值 | -| -------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------ | ------ | -| title | 关闭标题或设置标题内容 | `false`|`string` | `number` | `DisplayObject` | - | -| `style.`titleSpacing | 标题到坐标轴的距离 | `number` | 10 | -| `style.`titlePosition | 标题相对坐标轴的位置,支持首字母简写形式,如`'top'`简写为`'t'` | `'top'`|`'bottom'`|`'left'`|`'right'` | `'lb'` | -| `style.`titleFontSize | 标题文字大小 | `number` | - | -| `style.`titleFontFamily | 标题文字字体 | `string` | - | -| `style.`titleFontWeight | 标题字体粗细 | `number` | - | -| `style.`titleStroke | 标题字体颜色 | `string` | - | -| `style.`titleStrokeOpacity | 标题透明度 | `number` | - | +| 属性 | 描述 | 类型 | 默认值 | +| ------------------ | -------------------------------------------------------------- | ------------------------------------------------------------ | ------ | +| title | 关闭标题或设置标题内容 | `false`|`string` | `number` | `DisplayObject` | - | +| titleSpacing | 标题到坐标轴的距离 | `number` | 10 | +| titlePosition | 标题相对坐标轴的位置,支持首字母简写形式,如`'top'`简写为`'t'` | `'top'`|`'bottom'`|`'left'`|`'right'` | `'lb'` | +| titleFontSize | 标题文字大小 | `number` | - | +| titleFontFamily | 标题文字字体 | `string` | - | +| titleFontWeight | 标题字体粗细 | `number` | - | +| titleStroke | 标题字体颜色 | `string` | - | +| titleStrokeOpacity | 标题透明度 | `number` | - | ### 轴线 -| 属性 | 描述 | 类型 | 默认值 | -| ------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------ | ------ | -| line | 是否显示轴线 | `boolean` | true | -| arrow | 是否显示箭头 | `boolean` | true | -| `style.`lineExtension | 轴线两侧的延长线 | `[number, number]` | - | -| `style.`lineArrow | 定义轴线箭头形状,默认为箭头形状 | `DisplayObject` | - | -| `style.`lineArrowOffset | 箭头偏移长度 | `number` | 15 | -| `style.`lineArrowSize | 箭头尺寸 | `number` | - | -| `style.`lineLineWidth | 轴线宽度 | `number` | - | -| `style.`lineLineDash | 轴线描边的虚线配置,第一个值为虚线每个分段的长度,第二个值为分段间隔的距离。lineDash 设为[0, 0]的效果为没有描边。 | `[number,number]` | - | -| `style.`lineStroke | 轴线描边色 | `string` | - | -| `style.`lineStrokeOpacity | 轴线描边色透明度 | `number` | - | +| 属性 | 描述 | 类型 | 默认值 | +| ----------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------ | ------ | +| line | 是否显示轴线 | `boolean` | true | +| arrow | 是否显示箭头 | `boolean` | true | +| lineExtension | 轴线两侧的延长线 | `[number, number]` | - | +| lineArrow | 定义轴线箭头形状,默认为箭头形状 | `DisplayObject` | - | +| lineArrowOffset | 箭头偏移长度 | `number` | 15 | +| lineArrowSize | 箭头尺寸 | `number` | - | +| lineLineWidth | 轴线宽度 | `number` | - | +| lineLineDash | 轴线描边的虚线配置,第一个值为虚线每个分段的长度,第二个值为分段间隔的距离。lineDash 设为[0, 0]的效果为没有描边。 | `[number,number]` | - | +| lineStroke | 轴线描边色 | `string` | - | +| lineStrokeOpacity | 轴线描边色透明度 | `number` | - | ### 刻度 -| 属性 | 描述 | 类型 | 默认值 | -| ------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ---------- | -| tick | 是否显示刻度 | `boolean` | true | -| tickFilter | 刻度线过滤 | `(datum, index, data)=>boolean` | - | -| tickFormatter | 刻度线格式化,可用于自定义刻度样式,回调函数中会额外返回该刻度的方向 | `DisplayObject` | `(datum, index, data, Vector)=> DisplayObject` | - | -| `style.`tickDirection | 刻度朝向,为 `positive` 时,位于侧轴方向(即主轴顺时针 90 度方向), 为 `negative` 时,刻度位于侧轴负方向 | `'positive'` | `'negative'` | 'positive' | -| `style.`tickLength | 轴线长度 | `number`|`(datum, index, data)=>number` | 15 | -| `style.`tickLineWidth | 刻度线宽度 | `number` | `(datum, index, data, Vector)=>number` | - | -| `style.`tickLineDash | 刻度线描边的虚线配置,第一个值为虚线每个分段的长度,第二个值为分段间隔的距离。lineDash 设为[0, 0]的效果为没有描边。 | `[number,number]` | `(datum, index, data, Vector)=>[number,number]` | - | -| `style.`tickStroke | 刻度线颜色 | `string` | `(datum, index, data, Vector)=>string` | - | -| `style.`tickStrokeOpacity | 刻度线透明度 | `number` | `(datum, index, data, Vector)=>number` | - | +| 属性 | 描述 | 类型 | 默认值 | +| ----------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ---------- | +| tick | 是否显示刻度 | `boolean` | true | +| tickFilter | 刻度线过滤 | `(datum, index, data)=>boolean` | - | +| tickFormatter | 刻度线格式化,可用于自定义刻度样式,回调函数中会额外返回该刻度的方向 | `DisplayObject` | `(datum, index, data, Vector)=> DisplayObject` | - | +| tickDirection | 刻度朝向,为 `positive` 时,位于侧轴方向(即主轴顺时针 90 度方向), 为 `negative` 时,刻度位于侧轴负方向 | `'positive'` | `'negative'` | 'positive' | +| tickLength | 轴线长度 | `number`|`(datum, index, data)=>number` | 15 | +| tickLineWidth | 刻度线宽度 | `number` | `(datum, index, data, Vector)=>number` | - | +| tickLineDash | 刻度线描边的虚线配置,第一个值为虚线每个分段的长度,第二个值为分段间隔的距离。lineDash 设为[0, 0]的效果为没有描边。 | `[number,number]` | `(datum, index, data, Vector)=>[number,number]` | - | +| tickStroke | 刻度线颜色 | `string` | `(datum, index, data, Vector)=>string` | - | +| tickStrokeOpacity | 刻度线透明度 | `number` | `(datum, index, data, Vector)=>number` | - | ### 刻度值 -| 属性 | 描述 | 类型 | 默认值 | -| -------------------------- | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ---------- | -| label | 是否显示刻度值 | `boolean` | - | -| labelFilter | 刻度值过滤 | `(datum, index, data)=> boolean` | - | -| labelFormatter | 刻度值线格式化 | `DisplayObject` | `(datum, index, data, Vector)=> DisplayObject` | - | -| transform | 刻度值转换,避免文本之间发生重叠。当前支持超长文本缩略、重叠刻度值隐藏、自动旋转 | `boolean` | - | -| labelAutoHide | 自动隐藏重叠的刻度值 | `number` | `(datum, index, data)=>number` | - | -| labelAutoRotate | 自动旋转刻度值 | `boolean` | - | -| labelAutoEllipsis | 自动缩略刻度值 | `boolean` | - | -| labelAutoWrap | 自动换行刻度值 | `boolean` | - | -| `style.`labelAlign | 刻度值对齐方式
- 'horizontal' 始终保持水平
- 'parallel' 平行于坐标轴
- 'perpendicular' 垂直于坐标轴 | `'horizontal'` | `'parallel'` | `'perpendicular'` | 'parallel' | -| `style.`labelDirection | 刻度值位于轴线的位置,参考`tickDirection` | `'positive'` | `'negative'` | 'positive' | -| `style.`labelSpacing | 刻度值到其对应刻度的间距 | `number` | 0 | -| `style.`labelLineWidth | 刻度值宽度 | `number` |`(datum, index, data)=>number` | - | -| `style.`labelLineDash | 刻度值描边的虚线配置,第一个值为虚线每个分段的长度,第二个值为分段间隔的距离。lineDash 设为[0, 0]的效果为没有描边。 | `[number,number]` | `(datum, index, data)=>[number, number]` | - | -| `style.`labelFontSize | 刻度值文字大小 | `number` | `(datum, index, data)=>number` | - | -| `style.`labelFontFamily | 刻度值文字字体 | `string` | `(datum, index, data)=>string` | - | -| `style.`labelFontWeight | 刻度值字体粗细 | `number` |`(datum, index, data)=>number` | - | -| `style.`labelStroke | 刻度值字体颜色 | `string` | `(datum, index, data)=>string` | - | -| `style.`labelStrokeOpacity | 刻度值文本透明度 | `number` | `(datum, index, data)=>number` | - | +| 属性 | 描述 | 类型 | 默认值 | +| ------------------ | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ---------- | +| label | 是否显示刻度值 | `boolean` | - | +| labelFilter | 刻度值过滤 | `(datum, index, data)=> boolean` | - | +| labelFormatter | 刻度值线格式化 | `DisplayObject` | `(datum, index, data, Vector)=> DisplayObject` | - | +| transform | 刻度值转换,避免文本之间发生重叠。当前支持超长文本缩略、重叠刻度值隐藏、自动旋转 | `Transform[]` | - | +| labelAutoHide | 自动隐藏重叠的刻度值,设置 size 值的时候生效 | `boolean` | `HideOverlapCfg` | - | +| labelAutoRotate | 自动旋转刻度,设置 size 值的时候生效值 | `boolean` | `RotateOverlapCfg` | - | +| labelAutoEllipsis | 自动缩略刻度值,设置 size 值的时候生效 | `boolean` | `EllipsisOverlapCfg` | - | +| labelAutoWrap | 自动换行刻度值,设置 size 值的时候是生效 | `boolean` | `WrapOverlapCfg` | - | +| labelAlign | 刻度值对齐方式
- 'horizontal' 始终保持水平
- 'parallel' 平行于坐标轴
- 'perpendicular' 垂直于坐标轴 | `'horizontal'` | `'parallel'` | `'perpendicular'` | 'parallel' | +| labelDirection | 刻度值位于轴线的位置,参考`tickDirection` | `'positive'` | `'negative'` | 'positive' | +| labelSpacing | 刻度值到其对应刻度的间距 | `number` | 0 | +| labelLineWidth | 刻度值宽度 | `number` |`(datum, index, data)=>number` | - | +| labelLineDash | 刻度值描边的虚线配置,第一个值为虚线每个分段的长度,第二个值为分段间隔的距离。lineDash 设为[0, 0]的效果为没有描边。 | `[number,number]` | `(datum, index, data)=>[number, number]` | - | +| labelFontSize | 刻度值文字大小 | `number` | `(datum, index, data)=>number` | - | +| labelFontFamily | 刻度值文字字体 | `string` | `(datum, index, data)=>string` | - | +| labelFontWeight | 刻度值字体粗细 | `number` |`(datum, index, data)=>number` | - | +| labelStroke | 刻度值字体颜色 | `string` | `(datum, index, data)=>string` | - | +| labelStrokeOpacity | 刻度值文本透明度 | `number` | `(datum, index, data)=>number` | - | ```ts export interface Transform { /** 避免刻度值重叠时的额外边距 */ margin?: number[]; } + export interface EllipsisOverlapCfg extends Transform { type: 'ellipsis'; /** 缩略替换字符,默认为 ... */ @@ -131,6 +177,7 @@ export interface EllipsisOverlapCfg extends Transform { /** 每次缩略执行步长 */ step?: string | number; } + export interface RotateOverlapCfg extends Transform { type: 'rotate'; /** 可选的旋转角度值 */ @@ -138,6 +185,7 @@ export interface RotateOverlapCfg extends Transform { /** 当旋转无法避免重叠时,是否恢复为默认旋转角度 */ recoverWhenFailed?: boolean; } + export interface HideOverlapCfg extends Transform { type: 'hide'; /** 保证第一个刻度值不被隐藏 */ @@ -145,6 +193,7 @@ export interface HideOverlapCfg extends Transform { /** 保证最后一个刻度值不被隐藏 */ keepTail?: boolean; } + export interface WrapOverlapCfg extends Transform { type: 'wrap'; /** 单行最大宽度 */ @@ -166,16 +215,16 @@ export interface WrapOverlapCfg extends Transform { | `极坐标系` | polar-grid | | `极坐标系` `雷达图` | polygon-grid | -| 属性 | 描述 | 类型 | 默认值 | -| ------------------------- | ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------ | -| grid | 是否显示网格线 | `boolean` | false | -| gridFilter | 网格线过滤 | `(datum, index, data)=> boolean` | - | -| `style.`gridLength | 网格线长度。一般情况下,不需要用户配置。 | `number` | `(datum, index, data)=> number` | 0 | -| `style.`gridAreaFill | 网格线区域颜色 | `string` | `string[]`| `(datum, index, data)=> string` | - | -| `style.`gridLineWidth | 网格线宽度 | `number` | - | -| `style.`gridLineDash | 网格线描边的虚线配置,第一个值为虚线每个分段的长度,第二个值为分段间隔的距离。lineDash 设为[0, 0]的效果为没有描边。 | `[number,number]` | - | -| `style.`gridStroke | 网格线颜色 | `string` | - | -| `style.`gridStrokeOpacity | 网格线透明度 | `number` | - | +| 属性 | 描述 | 类型 | 默认值 | +| ----------------- | ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------ | +| grid | 是否显示网格线 | `boolean` | false | +| gridFilter | 网格线过滤 | `(datum, index, data)=> boolean` | - | +| gridLength | 网格线长度。一般情况下,不需要用户配置。 | `number` | `(datum, index, data)=> number` | 0 | +| gridAreaFill | 网格线区域颜色 | `string` | `string[]`| `(datum, index, data)=> string` | - | +| gridLineWidth | 网格线宽度 | `number` | - | +| gridLineDash | 网格线描边的虚线配置,第一个值为虚线每个分段的长度,第二个值为分段间隔的距离。lineDash 设为[0, 0]的效果为没有描边。 | `[number,number]` | - | +| gridStroke | 网格线颜色 | `string` | - | +| gridStrokeOpacity | 网格线透明度 | `number` | - | ### 动画 diff --git a/src/component/axis.ts b/src/component/axis.ts index aa70fc9c91..d87d58aa55 100644 --- a/src/component/axis.ts +++ b/src/component/axis.ts @@ -241,7 +241,7 @@ function inferLabelOverlap(transform = [], style: Record) { const addToTransforms = (overlap, state) => { if (state) { - finalTransforms.push(overlap); + finalTransforms.push({ ...overlap, ...state }); } }; diff --git a/src/theme/light.ts b/src/theme/light.ts index b8ad0bfc7d..1962eb5b8b 100644 --- a/src/theme/light.ts +++ b/src/theme/light.ts @@ -278,6 +278,7 @@ export const Light: TC = (options) => { labelDirection: 'negative', tickDirection: 'negative', titlePosition: 'top', + labelAutoRotate: false, titleSpacing: 12, labelSpacing: 4, titleTextBaseline: 'middle', @@ -285,7 +286,7 @@ export const Light: TC = (options) => { axisBottom: { gridDirection: 'negative', labelDirection: 'positive', - labelAutoRotate: true, + labelAutoRotate: false, tickDirection: 'positive', titlePosition: 'bottom', titleSpacing: 12,