diff --git a/common/changes/@visactor/vchart/fix-fix-the-issue-where-invalidType-of-scatter-plot-checks-x-and-y-at-the-same-time_2023-10-25-09-39.json b/common/changes/@visactor/vchart/fix-fix-the-issue-where-invalidType-of-scatter-plot-checks-x-and-y-at-the-same-time_2023-10-25-09-39.json new file mode 100644 index 0000000000..568f344d13 --- /dev/null +++ b/common/changes/@visactor/vchart/fix-fix-the-issue-where-invalidType-of-scatter-plot-checks-x-and-y-at-the-same-time_2023-10-25-09-39.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "fix: fix the issue where invalidType of scatter chart checks x and y at the same time\n\n", + "type": "none", + "packageName": "@visactor/vchart" + } + ], + "packageName": "@visactor/vchart", + "email": "lixuef1313@163.com" +} \ No newline at end of file diff --git a/packages/vchart/src/component/axis/polar/interface/common.ts b/packages/vchart/src/component/axis/polar/interface/common.ts index 86af6a90f2..1da5a9c05b 100644 --- a/packages/vchart/src/component/axis/polar/interface/common.ts +++ b/packages/vchart/src/component/axis/polar/interface/common.ts @@ -12,6 +12,9 @@ export type IPolarGrid = IGrid & { smooth?: boolean; }; export interface IPolarAxisHelper { + // axis is continuous + isContinuous: boolean; + dataToPosition: (values: any, cfg?: any) => number; coordToPoint: (point: IPolarPoint) => IPoint; pointToCoord: (point: IPoint) => IPolarPoint; diff --git a/packages/vchart/src/series/cartesian/cartesian.ts b/packages/vchart/src/series/cartesian/cartesian.ts index 3a62a0d75f..7a431f0f85 100644 --- a/packages/vchart/src/series/cartesian/cartesian.ts +++ b/packages/vchart/src/series/cartesian/cartesian.ts @@ -16,7 +16,7 @@ import type { DirectionType } from '../../typings/space'; // eslint-disable-next-line no-duplicate-imports import { Direction } from '../../typings/space'; import type { Datum, StringOrNumber } from '../../typings'; -import { array, isValid } from '../../util'; +import { array, couldBeValidNumber, isValid } from '../../util'; // eslint-disable-next-line no-duplicate-imports import { isContinuous } from '@visactor/vscale'; import type { StatisticOperations } from '../../data/transforms/dimension-statistics'; @@ -78,6 +78,9 @@ export abstract class CartesianSeries { + if (this._xAxisHelper.isContinuous) { + if (!couldBeValidNumber(datum[this._specXField[0]])) { + return false; + } + } + if (this._yAxisHelper.isContinuous) { + if (!couldBeValidNumber(datum[this._specYField[0]])) { + return false; + } + } + return true; + }; } diff --git a/packages/vchart/src/series/polar/polar.ts b/packages/vchart/src/series/polar/polar.ts index 7dcc17dc99..b5baa2874e 100644 --- a/packages/vchart/src/series/polar/polar.ts +++ b/packages/vchart/src/series/polar/polar.ts @@ -1,7 +1,7 @@ import type { IBaseScale } from '@visactor/vscale'; import type { IPoint, IPolarPoint } from '../../typings/coordinate'; import type { IPolarSeries } from '../interface'; -import { array, shallowCompare, isValid, isNil } from '../../util'; +import { array, isValid, isNil, couldBeValidNumber } from '../../util'; import type { IPolarAxisHelper } from '../../component/axis/polar/interface'; // eslint-disable-next-line no-duplicate-imports import { isContinuous } from '@visactor/vscale'; @@ -229,4 +229,18 @@ export abstract class PolarSeries sortDataInAxisHelper(this.angleAxisHelper, this._angleField[0], this.getViewData().latestData); } } + + protected _getInvalidDefined = (datum: Datum) => { + if (this.angleAxisHelper.isContinuous) { + if (!couldBeValidNumber(datum[this._angleField[0]])) { + return false; + } + } + if (this.radiusAxisHelper.isContinuous) { + if (!couldBeValidNumber(datum[this._radiusField[0]])) { + return false; + } + } + return true; + }; } diff --git a/packages/vchart/src/series/scatter/scatter.ts b/packages/vchart/src/series/scatter/scatter.ts index 425a2c72cb..46334caba3 100644 --- a/packages/vchart/src/series/scatter/scatter.ts +++ b/packages/vchart/src/series/scatter/scatter.ts @@ -56,8 +56,6 @@ export class ScatterSeries ex private _shapeField: string; protected _invalidType: IScatterInvalidType = 'zero'; - protected _getInvalidDefined = (datum: Datum) => - couldBeValidNumber(datum[this.getStackValueField()]) && couldBeValidNumber(datum[this.getDimensionField()[0]]); setAttrFromSpec() { super.setAttrFromSpec();