1
- import { isFunction , isNumber , isString , deepMix } from '@antv/util' ;
1
+ import { isFunction , deepMix , isString , isArray } from '@antv/util' ;
2
2
import { Params } from '../../core/adaptor' ;
3
3
import { flow } from '../../utils' ;
4
4
import { tooltip , interaction , animation , theme , scale } from '../../adaptor/common' ;
@@ -24,30 +24,30 @@ function field(params: Params<ScatterOptions>): Params<ScatterOptions> {
24
24
}
25
25
26
26
// shape
27
- if ( shape ) {
28
- if ( isString ( shape ) ) {
29
- geometry . shape ( shape ) ;
30
- } else {
31
- geometry . shape ( shapeField || xField , shape ) ;
32
- }
27
+ if ( isFunction ( shape ) ) {
28
+ geometry . shape ( ` ${ xField } * ${ yField } * ${ colorField } * ${ sizeField } * ${ shapeField } ` , shape ) ;
29
+ } else if ( isArray ( shape ) && shapeField ) {
30
+ geometry . shape ( shapeField , shape ) ;
31
+ } else if ( isString ( shape ) || isString ( shapeField ) ) {
32
+ geometry . shape ( ( shape || shapeField ) as string ) ;
33
33
}
34
34
35
35
// color
36
- if ( color ) {
37
- if ( isString ( color ) ) {
38
- geometry . color ( color ) ;
39
- } else {
40
- geometry . color ( colorField || xField , color ) ;
41
- }
36
+ if ( isFunction ( color ) ) {
37
+ geometry . color ( ` ${ xField } * ${ yField } * ${ colorField } * ${ sizeField } * ${ shapeField } ` , color ) ;
38
+ } else if ( isArray ( color ) && colorField ) {
39
+ geometry . color ( colorField , color ) ;
40
+ } else if ( isString ( color ) || isString ( colorField ) ) {
41
+ geometry . color ( ( color || colorField ) as string ) ;
42
42
}
43
43
44
44
// size
45
- if ( size ) {
46
- if ( isNumber ( size ) ) {
47
- geometry . size ( size ) ;
48
- } else {
49
- geometry . size ( sizeField || xField , size ) ;
50
- }
45
+ if ( isFunction ( size ) ) {
46
+ geometry . size ( ` ${ xField } * ${ yField } * ${ colorField } * ${ sizeField } * ${ shapeField } ` , size ) ;
47
+ } else if ( isArray ( size ) && sizeField ) {
48
+ geometry . size ( sizeField , size ) ;
49
+ } else if ( isString ( size ) || isString ( sizeField ) ) {
50
+ geometry . size ( ( size || sizeField ) as string ) ;
51
51
}
52
52
53
53
return params ;
@@ -89,10 +89,18 @@ function axis(params: Params<ScatterOptions>): Params<ScatterOptions> {
89
89
*/
90
90
function legend ( params : Params < ScatterOptions > ) : Params < ScatterOptions > {
91
91
const { chart, options } = params ;
92
- const { legend, colorField } = options ;
92
+ const { legend, colorField, shapeField, sizeField } = options ;
93
+
94
+ if ( legend ) {
95
+ chart . legend ( shapeField || colorField , legend ) ;
96
+ } else {
97
+ chart . legend ( false ) ;
98
+ chart . legend ( colorField , false ) ;
99
+ }
93
100
94
- if ( legend && colorField ) {
95
- chart . legend ( colorField , legend ) ;
101
+ // 隐藏连续图例
102
+ if ( sizeField ) {
103
+ chart . legend ( sizeField , false ) ;
96
104
}
97
105
98
106
return params ;
@@ -104,13 +112,13 @@ function legend(params: Params<ScatterOptions>): Params<ScatterOptions> {
104
112
*/
105
113
function style ( params : Params < ScatterOptions > ) : Params < ScatterOptions > {
106
114
const { chart, options } = params ;
107
- const { xField, yField, pointStyle, colorField } = options ;
115
+ const { xField, yField, pointStyle, colorField, sizeField , shapeField } = options ;
108
116
109
117
const geometry = chart . geometries [ 0 ] ;
110
118
111
119
if ( pointStyle && geometry ) {
112
120
if ( isFunction ( pointStyle ) ) {
113
- geometry . style ( `${ xField } *${ yField } *${ colorField } ` , pointStyle ) ;
121
+ geometry . style ( `${ xField } *${ yField } *${ colorField } * ${ sizeField } * ${ shapeField } ` , pointStyle ) ;
114
122
} else {
115
123
geometry . style ( pointStyle ) ;
116
124
}
0 commit comments