diff --git a/__tests__/unit/plots/scatter/size-spec.ts b/__tests__/unit/plots/scatter/size-spec.ts index e9c6d7e8c0..0025efff00 100644 --- a/__tests__/unit/plots/scatter/size-spec.ts +++ b/__tests__/unit/plots/scatter/size-spec.ts @@ -97,4 +97,33 @@ describe('scatter', () => { scatter.destroy(); }); + + it('size: default', () => { + const scatter = new Scatter(createDiv(), { + width: 400, + height: 300, + appendPadding: 10, + data, + xField: 'weight', + yField: 'height', + sizeField: 'weight', + }); + + scatter.render(); + + const geometry = scatter.chart.geometries[0]; + const elements = geometry.elements; + const sizeArr = []; + elements.forEach((ele) => { + sizeArr.push(ele.getModel().size); + }); + sizeArr.sort((a, b) => a - b); + + // @ts-ignore + expect(elements.length).toBe(507); + expect(sizeArr[0] > 0).toBeTruthy(); + expect(sizeArr[0]).not.toEqual(sizeArr[sizeArr.length - 1]); + + scatter.destroy(); + }); }); diff --git a/src/plots/scatter/adaptor.ts b/src/plots/scatter/adaptor.ts index 2aef522167..9bd8619cbc 100644 --- a/src/plots/scatter/adaptor.ts +++ b/src/plots/scatter/adaptor.ts @@ -1,4 +1,4 @@ -import { isBoolean } from '@antv/util'; +import { isBoolean, isArray } from '@antv/util'; import { Params } from '../../core/adaptor'; import { flow, deepAssign } from '../../utils'; import { point } from '../../adaptor/geometries'; @@ -29,10 +29,15 @@ export function transformOptions(options: ScatterOptions): ScatterOptions { */ function geometry(params: Params): Params { const { chart, options } = params; - const { data, type, color, shape, size, pointStyle, shapeField, colorField, xField, yField, sizeField } = options; + const { data, type, color, shape, pointStyle, shapeField, colorField, xField, yField, sizeField } = options; + let { size } = options; let { tooltip } = options; + if (sizeField && !isArray(size)) { + size = [2, 8]; + } + if (tooltip && !tooltip.fields) { tooltip = { ...tooltip,