@antv/g2
Version:
the Grammar of Graphics in Javascript
60 lines • 1.91 kB
JavaScript
import { __assign } from "tslib";
import { each, max, map, isArray } from '@antv/util';
import { registerShape, registerShapeFactory } from '../base';
import { getViolinPath } from '../util/get-path-points';
import { getStyle } from '../util/get-style';
function normalizeSize(arr) {
if (!isArray(arr)) {
return [];
}
var maxValue = max(arr);
return map(arr, function (num) { return num / maxValue; });
}
var ViolinShapeFactory = registerShapeFactory('violin', {
defaultShapeType: 'violin',
getDefaultPoints: function (pointInfo) {
var radius = pointInfo.size / 2;
var points = [];
var sizeArr = normalizeSize(pointInfo._size);
each(pointInfo.y, function (y, index) {
var offset = sizeArr[index] * radius;
var isMin = index === 0;
var isMax = index === pointInfo.y.length - 1;
points.push({
isMin: isMin,
isMax: isMax,
x: pointInfo.x - offset,
y: y,
});
points.unshift({
isMin: isMin,
isMax: isMax,
x: pointInfo.x + offset,
y: y,
});
});
return points;
},
});
registerShape('violin', 'violin', {
draw: function (cfg, container) {
var shapeAttrs = getStyle(cfg, true, true);
var path = this.parsePath(getViolinPath(cfg.points));
return container.addShape('path', {
attrs: __assign(__assign({}, shapeAttrs), { path: path }),
name: 'violin',
});
},
getMarker: function (markerCfg) {
var color = markerCfg.color;
return {
symbol: 'circle',
style: {
r: 4,
fill: color,
},
};
},
});
export default ViolinShapeFactory;
//# sourceMappingURL=index.js.map